【发布时间】:2015-12-14 14:17:24
【问题描述】:
当我尝试在创建的线程中使用我的方法时,线程会在循环中跳过“if”语句。问题是 label4 总是显示其他状态。我应该怎么做才能正确操作?这是我的代码;
这是我创建线程的地方;
for(int i = 0; i <threads; i++)
{
var tempThread = new Thread(new ThreadStart(DoWork));
tempThread.Name = i.ToString();
tempThread.Start();
}
CheckForIllegalCrossThreadCalls = false;
这就是我的线程方法所做的;
public void DoWork()
{
for(int i=2; i < variable/ 2; i++)
{
if (variable% i == 0) label4.Text ="yes not";
else label4.Text = "yes";
}
}
【问题讨论】:
-
CheckForIllegalCrossThreadCalls = false看起来像你作弊,而不是理解问题并以正确的方式解决它。这会咬你的。 -
变量是“整数”。我正在理解线程逻辑,但这一个是针对我的项目的,我没有时间以正确的方式去做。但是项目结束后,我当然会明白其中的逻辑,下次我不会作弊:)
-
在后台线程中更新标签不起作用。你调试过这段代码吗?还是您没有显示其中的某些部分?
-
@YuvalItzchakov 这不是全部代码,但问题出在这些部分。当我调试所有代码时没有问题,但标签不显示正确的文本。
-
“没有问题,但标签没有显示正确的文字”这听起来很矛盾。
标签: c# multithreading loops