帮忙看个多线程的winform程序吧。

狼王_ 2012-05-04 05:10:04

private void button1_Click(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
Thread myThread = new Thread(HotelManager.getHotelInfoToMemCacheNew);
myThread.Start(richTextBox1);
}
这是button1的click事件

我现在想把这个事件里执行的东西独立成一个方法

private static void button1click(object source, System.Timers.ElapsedEventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
Thread myThread = new Thread(HotelManager.getHotelInfoToMemCacheNew);
myThread.Start(richTextBox1);
}

但是这是就出现问题了,这个richTextBox1是窗体中的一个RichTextBox控件,在这个方法中调用不到

这是winform项目

该怎么办啊?

...全文
68 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
狼王_ 2012-05-07
  • 打赏
  • 举报
回复


private void button1click(object source, System.Timers.ElapsedEventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
Thread myThread = new Thread(HotelManager.getHotelInfoToMemCacheNew);
myThread.Start(richTextBox1);
}



把static去掉就行了。。。
chen_ya_ping 2012-05-04
  • 打赏
  • 举报
回复
myThread.Start(richTextBox1);

开始一个方法名,你却给他一个控件名
绝代坏坏 2012-05-04
  • 打赏
  • 举报
回复
用ParameterizedThreadStart 把对象传递过去就是了。
狼王_ 2012-05-04
  • 打赏
  • 举报
回复
那这么办啊?
xuan.ye 2012-05-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
C# code

private void button1_Click(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
Thread myThread = new Thread(HotelManager.getHotelIn……
[/Quote]
不管是winform 还是web 如果允许在线程中使用页面的变量就是错误的。

如果你脱离了这个页面(在其他页面),而线程没有结束,线程找不到控件是不允许的。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧