我正在使用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
作为参数传递给像这样的
private Task _task = new Task(SomeMethod);
我有这个编译错误:
无法在静态上下文中访问非静态方法“SomeMethod”
我不能让SomeMethod
静止,因为很多原因是不可能的。
据我所知,Task
课程超过Thread
课程,所以这是我认为非常奇怪的限制。
是否可以使用非静态方法作为Task
的来源?
答案 0 :(得分:2)
使用构造函数:
private Task _task;
public YourClassName()
{
this._task = new Task(this.SomeMethod);
}
答案 1 :(得分:0)
您也可以使用lambda表达式。
private void SomeMethod() {
// some actions
}
Task task = new Task(() => {
SomeMethod();
});
task.Start();