我想启动一个进程(调用另一个程序),目前外部程序需要时间(这是正常的)!
但它会冻结我的GUI 我看到了很多例子,我正在学习,很难弄清楚, 试图阅读和学习线程,但它并不那么容易(至少对我而言) 和简单的教程或代码示例?
欢呼声
答案 0 :(得分:6)
这是一个显示如何使用异步方法的链接。 http://www.codeproject.com/KB/cs/AsyncMethodInvocation.aspx
您可以使用异步方法启动进程,并且在启动时不会冻结gui。
void Your_Method()
{
//Start process here
}
MethodInvoker myProcessStarter= new MethodInvoker(Your_Method);
myProcessStarter.BeginInvoke(null, null);
答案 1 :(得分:1)
BackgroundWorker就是为这种情况而设计的。
请参阅MSDN。
它为信令(两种方式)提供了有用的方法,这些方法不需要您自己将回调编组回UI线程。
或使用Task Parallel Library ...
答案 2 :(得分:1)
使用此:
在顶部声明:
BackgroundWorker backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
然后在form_load中:
backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted);
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
之后:
backgroundWorker1.RunWorkerAsync(someArg); // this calls backgroundWorker1_DoWork(....
// This event handler is where the actual,
// potentially time-consuming work is done.
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
}