이 내 코드입니다 : C# 호출하기는 작업이 완료되지 원인
public void ReadCodes(){
Task compute = Task.Run(() =>
{
//foo code
foreach (var line in lines)
{
//some other codes
SetText("doing something");
}
});
compute.Wait();
//some other foo
}
private void SetText(string text)
{
if (this.lblUsedFiles.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.lblUsedFiles.Text = text;
}
}
내가 ReadCodes()
기능이 작동 SetText("doing something")
호출을 제거
Task.Run()
안에 UI를 업데이트하고 싶습니다.
'Wait'은 메인 스레드를 차단하므로'Invoke' 코드를 스케쥴 할 수 없습니다. – CodesInChaos
즉 교착 상태에 빠졌습니다. –
'Task.Run' 다음에'task.Wait'가 완전히 무시 될 수 있습니다. 당신은 그것으로부터 어떠한 이득도 얻지 못합니다. 메서드를 동 기적으로 호출하면됩니다. –