为什么代码不等待 "wait" 中的循环完成?
Why doesn't the code wait for the loop to complete in "wait"?
Thread ThreadWindow = new Thread(async () =>
{
WindowWPF windowWPF = new WindowWPF();
windowWPF.Show();
await Task.Run(() =>
{
while (true)
{
//code
}
});
//code works when it shouldn't be available
});
出于某种原因,编译器建议我更改最后一行:});
in }){};
what is this for?
想法是显示加载 window 并并行处理数据,之后 window 应该关闭。
不会,一旦点击await
,就会返回一个不完整的Task
,await
内的作业会作为future
回调返回如果它有点长 运行 工作。
由于您已经 while(true)
使这段代码无限执行,假设您正在尝试执行 call and forget way
,如果是这样,则不要使用 await
。另外,不要创建 new Thread
,而是尝试使用 Task
,如下所示
var task = new Task(() => MyLongRunningMethod(),
TaskCreationOptions.LongRunning | TaskCreationOptions.PreferFairness);
task.Start();
Thread ThreadWindow = new Thread(async () =>
{
WindowWPF windowWPF = new WindowWPF();
windowWPF.Show();
await Task.Run(() =>
{
while (true)
{
//code
}
});
//code works when it shouldn't be available
});
出于某种原因,编译器建议我更改最后一行:});
in }){};
what is this for?
想法是显示加载 window 并并行处理数据,之后 window 应该关闭。
不会,一旦点击await
,就会返回一个不完整的Task
,await
内的作业会作为future
回调返回如果它有点长 运行 工作。
由于您已经 while(true)
使这段代码无限执行,假设您正在尝试执行 call and forget way
,如果是这样,则不要使用 await
。另外,不要创建 new Thread
,而是尝试使用 Task
,如下所示
var task = new Task(() => MyLongRunningMethod(),
TaskCreationOptions.LongRunning | TaskCreationOptions.PreferFairness);
task.Start();