2 回答
TA贡献1804条经验 获得超7个赞
使用同步循环,您可以阻止任何其他活动,直到代码完成“键入”。因此,第二次调用将不得不等待,并且输出不会与第一个调用的输出混合。Write
据推测,在版本中,您可以同时启动两个调用并让它们并行运行 - 实际上它们会同时键入字符。asyncWrite
修复:退货WriteTask
private async Task Write(string text) …
和在进行第二个调用之前进行第一个调用(您可能还需要使方法调用也异步:awaitWrite
await Write("First one");
await Write("Second one");
TA贡献1719条经验 获得超6个赞
UI 冻结的原因可能是因为你使用的是 UI 的线程。这将冻结它。
private bool Write(string text)
{
var t;
foreach (char c in text)
{
t = Task.Run(() => Console.AppendText(c.ToString());
t.Wait(TimeSpan.FromMilliseconds(50));
}
t = Task.Run(() => Console.AppendText(Console.AppendText(Environment.NewLine));
t.Wait(); // wait for completion.
return true;
}
- 2 回答
- 0 关注
- 104 浏览
添加回答
举报
