【发布时间】:2018-12-28 12:36:35
【问题描述】:
我尝试在线程完成后调用一个函数,但我不能。
我只能在我的函数调用代码之前使用while(threadName.isAlive) 方法,但它不好因为当我使用此代码时程序停止。你有什么想法吗?
public partial class Form1 : Form
{
Thread myThread;
string myString = string.Empty;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
myThread = new Thread(write);
myThread.Start();
while (myThread.IsAlive) ;
textBox1.Text = myString;
}
public void write()
{
for (int i = 0; i < 10; i++) {
myString += "aaa " + i + "\r\n";
Thread.Sleep(1000);
}
}
}
【问题讨论】:
-
请添加您的代码
-
看来你想要的是
Task,而不是Thread:myTask.ContinueWith(...) -
Thread非常关注机制。你可以创建一个Task,正如其他人所说的那样,这更现代,或者你可以让自己完全更新并接受async/await。这样做,您甚至可以在适当的时候直接与 UI 交互(如果Thread.Sleep变为Task.Delay并表示 I/O 工作而不是 CPU 工作) -
首先要学习的是,你应该(几乎)永远不要使用线程。使用任务和异步/等待。
标签: c# multithreading