告急:求达人相助?(C# winform)

bugttp 2010-12-16 02:46:12

//应用场景:

private void btn_Click(object sender, EventArgs e)
{


//@假设已经存在一个数组 array (注意数组元素个数是可变的)
string[] strArray = new string[3] {"a","b","c"};
//@方案1: 起动数组元素个数个线程执行 MyMethod(string str) ,MyMethod方法需要参数是数组的单个元素
//@方案2: 单线程执行,循环数组元素传参
}

private void MyMethod(string str) //此方法较耗时
{
/*{根据参数str执行过程}*/

//@得到了个一个需要的string型数据A
//@


//即时更新UI中的textbox (name是tbx)
tbxText = A;
}


//每个array中的元素都传入了MyMethod方法,程序执行完毕



告急:求达人相助?不够加分
...全文
112 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bugttp 2010-12-16
  • 打赏
  • 举报
回复
菜鸟要伪代码啊
yixinpai 2010-12-16
  • 打赏
  • 举报
回复
游戏规则:
1、非UI线程调用UI线程中的属性、控件属性等,可以直接调用;
2、非UI线程给UI线程的属性、控件属性等附值,通过#2楼的方法间接修改,当然用的多的还是委托;
解决方案
因为非UI线程多个同时做一样的事情,所以要加锁,推荐阅读
http://blog.csdn.net/RoyYeah/archive/2009/11/13/4803380.aspx

UI线程作为非UI线程们沟通的中介。
你试试。
wuyq11 2010-12-16
  • 打赏
  • 举报
回复
线程调用控件使用委托,invoke
线程传递参数Thread th = new Thread(new ParameterizedThreadStart(method));
th.Start("参数"));
private void method(string s)
{}
public Thread(
ParameterizedThreadStart start
)
public delegate void ParameterizedThreadStart(
Object obj
)
w5588660 2010-12-16
  • 打赏
  • 举报
回复
引用 2 楼 findcaiyzh 的回复:
线程中更新UI需要使用委托,或者其他方法


参考:
WinForm/Silverlight多线程编程中如何更新UI控件的值



好帖
bjddd105 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 findcaiyzh 的回复:]
线程中更新UI需要使用委托,或者其他方法


参考:
WinForm/Silverlight多线程编程中如何更新UI控件的值
[/Quote]

好帖
啊兵 2010-12-16
  • 打赏
  • 举报
回复
用得比较多的是委托
宝_爸 2010-12-16
  • 打赏
  • 举报
回复
原来不止委托可以达成目标,还有其它方法,我自己也学习了下:)
宝_爸 2010-12-16
  • 打赏
  • 举报
回复
线程中更新UI需要使用委托,或者其他方法


参考:
WinForm/Silverlight多线程编程中如何更新UI控件的值
golden24kcn 2010-12-16
  • 打赏
  • 举报
回复
如果你在MyMethod里调用了UI控件,那么就不能用Thread调用MyMethod方法,除非使用代理。

不过如果你需要strArray中的数据被同时调用或不需要待太久周期,就foreach起线程吧
VCACC 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 findcaiyzh 的回复:]
线程中更新UI需要使用委托,或者其他方法


参考:
WinForm/Silverlight多线程编程中如何更新UI控件的值
[/Quote]

好东西~

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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