c# - 使用非静态方法作为任务的来源

标签 c# multithreading 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);
}

关于c# - 使用非静态方法作为任务的来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25742251/

相关文章:

multithreading - 为什么 CompareAndSwap 指令被认为是昂贵的?

c - fork() 是否为子进程创建了父进程创建的所有变量和对象的重复实例?

c# - 通过 COM 互操作调用线程

parallel-processing - OpenMP 任务循环 : synchronization between two consecutive taskloop constructs

multithreading - swi-prolog 中的多线程有一点改进

android - 从 Activity Back Stack 中的每个现有任务中删除应用程序的所有 Activity

c# - 如何在 iOS 上打开下载的文件

c# - Azure powershell 无法识别 "azure"

c# - 在多个表单之间共享一个类

c# - 当使用相同的变量名时,使用 is 运算符进行变量初始化会出错