我想启动一个进程(调用其他程序),目前外部程序需要一定的时间(这是正常的)!C#运行过程中我的应用程序的GUI
但冻结我的GUI 只见配发的例子,我学习,这是很难搞清楚, 试图阅读和学习线程,但它不是那么容易(至少对我来说) 和很好的简单教程或代码示例?
欢呼声
我想启动一个进程(调用其他程序),目前外部程序需要一定的时间(这是正常的)!C#运行过程中我的应用程序的GUI
但冻结我的GUI 只见配发的例子,我学习,这是很难搞清楚, 试图阅读和学习线程,但它不是那么容易(至少对我来说) 和很好的简单教程或代码示例?
欢呼声
以下是显示如何使用异步方法的链接。 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);
.Invoke()不是异步的。 .BeginInvoke()/。EndInvoke()对。是? – 2010-05-05 15:06:24
是的,我错过了。输入速度太快。 – kemiller2002 2010-05-05 15:57:36
使用此:
声明在顶部:
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)
{
}
向我们展示你正在使用的代码,我们也许能够提供帮助。 – spender 2010-05-05 13:13:52
错过基本面时,事情变得艰难。 – Mohanavel 2010-05-05 15:01:09