【发布时间】:2014-07-29 09:49:54
【问题描述】:
我有一个使用任务的应用程序。我们还修改了cultureInfo(我们使用EN-US语言,但保留日期/数字格式),我们使用.Net 4.0。
应用程序有很多线程和任务,我们有一个创建任务/线程的工厂。
对于线程,我们有以下代码,以确保使用正确的 CurrentCulture 启动每个线程:
//This is basically only the constructor, but it describe well how we create the Thread:
public MonitoredThread(ThreadStart threadStart, string name, bool isBackground = false)
{
m_threadStart = threadStart;
m_name = name;
m_isBackground = isBackground;
Thread = new Thread(ThreadWorker)
{
Name = name,
IsBackground = isBackground,
CurrentCulture = CustomCultureInfo.CurrentCulture,
CurrentUICulture = CustomCultureInfo.CurrentCulture
};
}
但是对于Tasks,我不知道如何实现这种机制:
public static Task ExecuteTask(Action action, string name)
{
MonitoredTask task = new MonitoredTask(action, name);
return Task.Factory.StartNew(task.TaskWorker);
}
有什么想法吗?
【问题讨论】:
-
TaskWorker是什么类型? -
MonitoredTask是一个代表Task的自定义类(我们在它们开始、结束等时跟踪它们...TaskWorker是一个属性,可以访问映射的Task按此类 -
出错了,
TaskWorker是我们在构造函数的参数中给的Action。 -
虽然晚了,但最好的答案在这里:stackoverflow.com/a/7536117/1662459
-
@GauravSinghJantwal “我们使用 .Net 4.0。”
标签: c# .net multithreading task-parallel-library cultureinfo