Winform用匿名方法新建线程的方法

1、将耗时的操作放在单独的线程,加快UI的响应速度。
(new Thread(delegate() { parse.ParseDay(StockCodeFileName,market,Overlay); })).Start();
在主线程A(Form)上新建线程B

2、非UI线程操作UI上的控件属性。
 this.BeginInvoke((ThreadStart)delegate()
{
      tbMessage.Text += String.Format("{0:HH:mm:ss},{1},{2}。\r\n", DateTime.Now, e.StockCode, e.Message);
});
Form继承自Control,Control内包含IAsyncResult BeginInvoke(Delegate method, object[] args)、object EndInvoke(IAsyncResult result)、object Invoke(Delegate method, object[] args)、bool InvokeRequired { get; }。其他线程不能直接操作Form内的控件,但通过Invoke、BeginInvoke可以把其他线程的代码转移到到Form的线程内执行。
this代表主线程A(Form)。delegate(){...}内的代码原本是在B线程内,通过this.BeginInvoke封装后,转移到A线程内执行。

 

你可能感兴趣的:(WinForm)