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 關注
- 98 瀏覽
添加回答
舉報