c#中invoke 和 begininvoke 都什么时候用
2个回答
展开全部
这两个方法最常用的场合是:多线程环境下更新控件。
例如,在WinForm程序中有一个后线程不断生成新的数字,而程序需要将这个数字在label1控件上显示,这是就需要调用Label控件的nvoke或者BeginInvok方法。
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
// 委托
delegate void MyDelegate(int x);
public Form1()
{
InitializeComponent();
// 启动一个后台线程
System.Threading.Thread t =
new System.Threading.Thread(MyThread);
t.IsBackground = true;
t.Start();
}
void MyMethod(int x)
{
label1.Text = x.ToString();
}
void MyThread()
{
int x = 0;
// 实例化委托
MyDelegate md = MyMethod;
// 线程循环
while (true)
{
x++;
// 利用Invok,调用委托 md, 在label1上显示x的值
label1.Invoke( md, x);
// 也可以调用BeginInvok
// label1.BeginInvoke(md, x);
// 休眠1秒钟
System.Threading.Thread.Sleep(1000);
}
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询