【发布时间】:2015-08-15 07:33:02
【问题描述】:
我想在线程完成工作后重新运行它。我有两个程序。一个在 Windows 窗体中,第二个在 cmd 中。 Windows 窗体程序在 cmd 中运行程序。
我尝试使用 while(true) 和 if:process.HasExited、.WaitForExit、.Join on thred、.IsBusy 并在 RunWorkerCompleted 上重新运行方法。但它不起作用。
BgWorker 代码(按钮点击操作):
backgroundWorker1.RunWorkerAsync();
backgroundWorker1.DoWork += new DoWorkEventHandler(uruchomWatek);
我想重新运行线程的函数
private void uruchomWatek(object sender, DoWorkEventArgs e)
{
String polaczenieZDB = config.Default.adresDb + ";" + config.Default.nazwaDb + ";" + config.Default.login + ";" + config.Default.haslo;
//przygotowuję proces
Process pr = new Process();
ProcessStartInfo prs = new ProcessStartInfo();
//uruchamiam cmd
prs.FileName = "cmd";
// /c START uruchamia program w cmd, przekazuję tutaj prametry
prs.Arguments = " /c START " + " " + @sciezkaDoSlaveTextBox.Text + " " + ipAdresTextBox.Text + " "
+ numerPortuTextBox.Text + " " + polaczenieZDB + " " + pobierzZadaniaDoSpr();
pr.StartInfo = prs;
//uruchamiam proces w nowym wątku
ThreadStart ths = new ThreadStart(() => pr.Start());
Thread th = new Thread(ths);
th.IsBackground = true;
th.Start();
}
【问题讨论】:
-
Thakns,我删除了线程。我试过类似的东西 while(true) { if(process.HasExited) { start } }
标签: c# multithreading backgroundworker