简而言之,我正在关注 C# 中的一个示例。根据文本,下面的代码应该是非阻塞的,但我发现表单要到 5 秒过去才会显示。
private void Form1_Load(object sender, EventArgs e)
{
var tcs = new TaskCompletionSource<int>();
new Thread(() => {Thread.Sleep(5000); tcs.SetResult(42); }).Start();
Task<int> task = tcs.Task;
MessageBox.Show(task.Result.ToString());
}
我觉得这与 Thread.Sleep() 有关,而不是让新线程进入睡眠状态,而是让主线程进入睡眠状态。
为什么会阻塞 UI 线程?