[英]Prevent Task from starting
TaskHolder
類具有Task
類型的屬性。 我將Task
作為參數傳遞給構造函數,它立即啟動。 有沒有辦法阻止它啟動?
public class Worker
{
public class TaskHolder
{
public TaskHolder(Task objective)
{
Objective = objective;
}
public Task Objective { get; set; }
}
public async Task DoSomething()
{
await Task.Delay(5000);
Debugger.Break(); // Task starts, so debugger stops here!
// Is there a way to prevent it from start?
}
[Test]
public async Task TempTest()
{
// programm starts here:
var t1 = new TaskHolder(DoSomething());
await Task.Delay(10000);
}
}
Task
表示等待的操作的當前或將來結果。 如果該任務已經開始,那很有趣-但這與接收該任務的代碼無關。
如果您不想開始任何事情,則可能應該傳遞一個Action
。 您可以通過Task.Run
從Action
創建Task
。 或者,您可以簡單地通過action()
或action.Invoke()調用該動作。
如果要運行的是顯式異步的:可以傳遞Func<Task>
。 同樣,如果您想要代表最終狀態的Task
,則可以使用Task.Run
啟動此類委托。 或者您也可以調用它。
(是否Invoke()
它( Invoke()
或將其傳遞給Task.Run()
取決於您是否希望它對任何一個使用線程))
最終,當您調用DoSomething()
, 您開始運行代碼。 Task.Delay
安排了一個計時器,然后代碼繼續到TaskHolder
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.