C#使用task時候假面卡死
下面的代碼是測試使用3個task去執行count_wast_time()這個函數;然後再畫面上面顯示“count_wast_time 開始”;但是一旦添加 Task.WaitAll界面就卡死了,為什麼??
求告知錯誤的原因,還有如何合理的修改
```
private void button3_Click(object sender, EventArgs e)
{
var tasks = new Task[3];
int i = 0;
int j = 0;
int k = 0;
a2 = 0;
string s1 = "";
tasks[0] = Task.Factory.StartNew(() =>
{
count_wast_time();
}
);
tasks[1] = Task.Factory.StartNew(() =>
{
count_wast_time();
}
);
tasks[2] = Task.Factory.StartNew(() =>
{
count_wast_time();
}
);
Task.WaitAll(tasks[0], tasks[1], tasks[2]); //???出問題
label3.Text = label3.Text + "全部執行完畢";
}
```
```
private void count_wast_time()
{
this.label3.Invoke(new Action(() =>
{
label3.Text = "count_wast_time 開始\n";
}));
for (int i2 = 0; i2 < 600; i2++)
{
for (int j2 = 0; j2 < 200; j2++)
{
for (int k3 = 0; k3< 100; k3++)
{
}
}
}
}
```
求告知錯誤的原因,還有如何合理的修改

```
private void button3_Click(object sender, EventArgs e)
{
var tasks = new Task[3];
int i = 0;
int j = 0;
int k = 0;
a2 = 0;
string s1 = "";
tasks[0] = Task.Factory.StartNew(() =>
{
count_wast_time();
}
);
tasks[1] = Task.Factory.StartNew(() =>
{
count_wast_time();
}
);
tasks[2] = Task.Factory.StartNew(() =>
{
count_wast_time();
}
);
Task.WaitAll(tasks[0], tasks[1], tasks[2]); //???出問題
label3.Text = label3.Text + "全部執行完畢";
}
```
```
private void count_wast_time()
{
this.label3.Invoke(new Action(() =>
{
label3.Text = "count_wast_time 開始\n";
}));
for (int i2 = 0; i2 < 600; i2++)
{
for (int j2 = 0; j2 < 200; j2++)
{
for (int k3 = 0; k3< 100; k3++)
{
}
}
}
}
```
...全文
相关推荐
C#多线程解决界面卡死问题的完美解决方案_极简版
C#多线程解决界面卡死问题的完美解决方案,简化了之前的写法,更容易记住和理解 C#多线程解决界面卡死问题的完美解决方案,简化了之前的写法,更容易记住和理解
C#多线程解决界面卡死问题的完美解决方案
C#多线程解决界面卡死问题的完美解决方案
Parallel.ForEach的卡死现象(线程操作问题C#源码实例)
Parallel.ForEach读取经常卡死,大家可以参考代码如何解决。
C# 并发处理界面卡死测试程序
已经博主授权,源码转载自 https://pan.quark.cn/s/788a6112918e Multithreading C#多线程编程实战 C# Multithreaded Programming Example 参考资料 https://blog.gkarch.com/topic/threading.html
C# winform多线程模板示例,winform多线程例子,C#
这是一个C# winform的多线程操作示例,可以参考解决界面卡死问题


