[英]Use non-static method as source for Task
我正在使用Thread
類創建另一個執行線程。 像這樣:
/// <summary>
/// This method is executed in parallel thread (NON-static!)
/// </summary>
private void SomeMethod()
{
// some actions
}
var thread = new Thread(SomeMethod);
thread.Start();
但是現在我需要能夠在運行時取消執行SomeMethod
。 因此,我嘗試使用Task
類及其取消機制。 當我嘗試像這樣將SomeMethod
作為參數傳遞給Task構造函數時
private Task _task = new Task(SomeMethod);
我有這個編譯錯誤:
無法在靜態上下文中訪問非靜態方法“ SomeMethod”
我不能使SomeMethod
靜態,這是不可能的,原因有很多。 據我所知, Task
類超過了Thread
類,所以我認為這是非常奇怪的限制。 是否可以使用非靜態方法作為Task
源?
使用構造函數:
private Task _task;
public YourClassName()
{
this._task = new Task(this.SomeMethod);
}
您也可以使用lambda表達式。
private void SomeMethod() {
// some actions
}
Task task = new Task(() => {
SomeMethod();
});
task.Start();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.