C# 跨线程操作问题 我现在写了一个c#的winform程序,后台有一个线程在监听局域网中的信息,收到信息后要在主窗体中动态创建一个自定义组件,但是建了组件之后我点击组件进行操作就出错,因为不是主线程创建的组件,所以不能操作求大神指导C#跨线程操作 C# 线程间通信 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用Control.Invoke,把创建界面的代码用委托写好了让UI线程调用。 我这有个例子,希望对你有帮助 //首先声明一个委托 delegate void ShowMethod(object o); ShowMethod s; public Form1() { s=new ShowMethod(OperateCom); //声明新的线程并调用方法 Thread newThread = new Thread(ThreadOperate); newThread.Start(); } private void ThreadOperate() { this.Invoke(s, new object[] { "操作" }); } private void OperateCom(object o) { Button btn1 = new Button(); btn1.Text = o.ToString(); btn1.Name = "btnOperate"; btn1.Click+=new EventHandler(btn1_Click); this.Controls.Add(btn1); } private void btn1_Click(object sender, EventArgs e) { MessageBox.Show("谢谢"); } 两种方法 :一种是用委托,这个上面的也说了还有一种是在监听线程里的开头加这一句 CheckForIllegalCrossThreadCalls = false;这个方法不安全,不如委托,不过也可以解决问题 MyXLS 组件如何插入分页符? 关于c# dll的反编译问题 文本框中加入"\r\n"后如何提取出该文本框中的内容? C#初学者求助! datagrid如何添加事件? c#的问题! 怎样格式化datagridview列的数据 还没有下载VS.NET 2003中文版的快点下 需要制作一个文件用于导入数据,有什么比较好的方案 是否连接网络???? 熟悉进销存的高手请帮帮忙,谢谢 Winform引用DEV控件问题
delegate void ShowMethod(object o);
ShowMethod s;
public Form1()
{
s=new ShowMethod(OperateCom);
//声明新的线程并调用方法
Thread newThread = new Thread(ThreadOperate);
newThread.Start();
}
private void ThreadOperate()
{
this.Invoke(s, new object[] { "操作" });
} private void OperateCom(object o)
{
Button btn1 = new Button();
btn1.Text = o.ToString();
btn1.Name = "btnOperate";
btn1.Click+=new EventHandler(btn1_Click);
this.Controls.Add(btn1);
}
private void btn1_Click(object sender, EventArgs e)
{
MessageBox.Show("谢谢");
}
一种是用委托,这个上面的也说了
还有一种是在监听线程里的开头加这一句 CheckForIllegalCrossThreadCalls = false;
这个方法不安全,不如委托,不过也可以解决问题