-1

私はまだ C# を学んでおり、ここで助けが必要です。スケジュールされるすべてのファイルを含むリストボックスがあります。これには DateTimePicker と DateTime を使用します。問題は、プログラムが最初に選択した項目のみを開始し、残りの項目を開始しないことです.上部が最初に開始し、終了するまで継続し、2 番目のファイルに継続するように項目を優先するにはどうすればよいですか? プログラムは変更された WPF アプリケーションです。

Startupinfo = リストボックス

コードは次のとおりです。

Dictionary<string, string> startupinfoDict = new Dictionary<string, string>();
private bool startjob() //DateTime checking for DateValue and start's if correct value.
{
    DateTime? start = DateTimePicker1.Value;
    DateTime? end = DateTimePicker2.Value;
    DateTime now = DateTime.Now;

    if (start == null || end == null)
    {
        Xceed.Wpf.Toolkit.MessageBox.Show("one of the pickers is empty");
    }
    else if (now >= start.Value && now <= end.Value)
    {
        if (startupinfo.SelectedItem != null)
        {
            string s = startupinfo.SelectedItem.ToString();

            if (startupinfoDict.ContainsKey(s))
            {
              Process process = Process.Start(startupinfoDict[s]);
                process.WaitForExit();
                while (!process.HasExited)
                    Thread.Sleep(500);
                Xceed.Wpf.Toolkit.MessageBox.Show("It works woho");
    }

        }
        return true;
    }
    return false;
}
4

1 に答える 1

1

交換してみる

if (startupinfo.SelectedItem != null)
{
  string s = startupinfo.SelectedItem.ToString();

  if (startupinfoDict.ContainsKey(s))
  {
    Process process = Process.Start(startupinfoDict[s]);
      process.WaitForExit();
      while (!process.HasExited)
          Thread.Sleep(500);
      Xceed.Wpf.Toolkit.MessageBox.Show("It works woho");
  }
}

のようなループで

foreach (var selected in startupinfo.SelectedItems)
{
  string s = selected.ToString();

  if (startupinfoDict.ContainsKey(s))
  {
    Process process = Process.Start(startupinfoDict[s]);
      process.WaitForExit();
      while (!process.HasExited)
          Thread.Sleep(500);
      Xceed.Wpf.Toolkit.MessageBox.Show("It works woho");
  }
}
于 2013-04-14T16:26:22.087 に答える