簡體   English   中英

使用非靜態方法作為Task的源

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM