c# - 如何创建一个新线程来执行 Action<T>

标签 c# .net multithreading action

标题几乎说明了一切。我有一些方法需要在新线程上运行,并且由于创建线程之前的所有代码都几乎相同,所以我想我会创建一个函数,它可以将我需要调用的 Action 作为参数。

问题是,我还没有找到如何告诉线程它需要执行 Action。这可能吗?这是我正在尝试做的一些示例代码。

private void ExecuteInBiggerStackThread(Action<Helper> action, Parameters parms)
{
    ParameterizedThreadStart operation = new ParameterizedThreadStart(action);// here's the mess
    Thread bigStackThread = new Thread(operation, 1024 * 1024);

    bigStackThread.Start(parms);
    bigStackThread.Join();
}

问候,
塞巴

最佳答案

我什至不会为 ParameterizedThreadStart 而烦恼。让编译器做肮脏的工作:

private void ExecuteInBiggerStackThread(Action<Helper> action, Helper h)
{
    Thread bigStackThread = new Thread(() => action(h), 1024 * 1024);

    bigStackThread.Start();
    bigStackThread.Join();
}

当然,您可以更进一步,将签名更改为:

private void ExecuteInBiggerStackThread(Action action) { ... }

关于c# - 如何创建一个新线程来执行 Action<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3290859/

相关文章:

c# - dotnet-razor-tooling.dll 的 .NET Core 1.0 部署问题

java - 使用 ConcurrentHashMap 实现参数化线程安全的延迟初始化缓存(不带 volatile 关键字)

c# - mvc5 razor 向 Controller 发送参数

c# - 如何将 JSON 数组或 JSON 对象转换为对象列表?

c# - 为什么核心类型只实现了部分接口(interface)?

java - 跨多个线程访问字符串

java - 如何在 Activity onPause 时停止线程?

c# - 构造函数注入(inject) (DI) 与静态工厂的横切问题?

c# - 在关键字后获得 2 个换行符

c# - 为什么包含 ValueTuple 的结构可以满足非托管约束,而 ValueTuple 本身却不能?