求问关于C#中多线程问题

sweetcity 2016-05-05 10:18:19
try
{
Thread t = new Thread(() =>
{
for (int tmpi = 0; tmpi < dsFangjixue.Tables[0].Rows.Count; tmpi++)
{
this.Dispatcher.Invoke(new Action(() =>
{
FormulaXuhao = tmp_xuhao[tmpi];
this.DataGrid1.Dispatcher.BeginInvoke(new myDelegate(init));
}));
}
});
t.Start();
}
catch (System.Exception ex)
{
MessageBox.Show(this, ex.Message, "提示", MessageBoxButton.OK, MessageBoxImage.Information);
}

上面是我的代码,其中FormulaXuhao是我定义的全局整数型数值,其可取值1、2、3、4、5、6,然后使用这个多线程方法进行运行。
进行断点调试,for循环中内容有时执行有时不执行,最后结果导致FormulaXuhao只能1取到1到6中的2个值或3个值等等,即我本身要生成六个线程可只生成了2个或3个线程,求大神解答,困扰了一天了。。。
...全文
90 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sweetcity 2016-05-06
  • 打赏
  • 举报
回复
谢谢两位,问题已解决~
为轮子而生 2016-05-06
  • 打赏
  • 举报
回复
如果一定要确保执行线程,就用Invoke,而不是BeginInvoke
南天空 2016-05-05
  • 打赏
  • 举报
回复
BeginInvoke是封装了当前的代码交给主线程执行,具体执行还是不执行,要看线程池的调度情况。

110,571

社区成员

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

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

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