我在執行緒和委托給其他類方面遇到了一些問題。希望能更好地理解遺漏或錯誤。現在我需要能夠在正在運行的任務中呼叫靜態類。對此沒什么可做的,因為這實際上來自 3rd 方庫。我已經嘗試了一些解決方案,但沒有奏效。這是我嘗試做的簡化示例。
namespace ThreadTest
{
class Program
{
static void Main(string[] args)
{
Task<string> designation = new Task<string>(delegate
{
return Global.SyncMethod();
});
var resolvedDesignation = designation.ContinueWith((i) => { return i.Result; });
string result = resolvedDesignation.Result;
}
}
public static class Global
{
public static string SyncMethod()
{
return "Return test";
}
}
}
這種執行緒的原因是能夠從需要一些時間來處理的東西中加載用戶,而不會鎖定 UI。但是,當嘗試呼叫參考的類時,它不起作用。對缺少的東西有什么幫助嗎?它不會拋出任何例外,只在它應該執行的時候進入和跳過。
uj5u.com熱心網友回復:
據我所知,給定的示例將陷入僵局。您實際上是在創建一個任務并阻止它直到它完成,但您永遠不會啟動它。因此,您將永遠阻止。
請參閱任務檔案或使用Task.Run創建和啟動任務。但請記住,即使您實際上正在啟動任務,在完成之前阻止它也不是一個好主意。它不會幫助您的 UI,因為 UI 執行緒仍然會被阻塞,并且如果啟動的任務需要在 UI 執行緒上執行某些操作,它仍然可能導致死鎖。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/422760.html
標籤:
上一篇:并行添加兩個陣列
