Execute task with the CurrentCulture set to the Task creator CurrentCulture
Im not sure you really need a MonitoredTask
for this. You can capture the custom culture using closure:
public static Task ExecuteTask(Action action, string name)
{
var customCulture = CustomCultureInfo.CurrentCulture;
return Task.Factory.StartNew(() =>
{
// use customCulture variable as needed
// inside the generated task.
});
}
Another way of doing this would be to pass the current culture as object state
using the proper overload (either Action<object>
or Func<object, TResult>
):
public static Task ExecuteTask(Action action, string name)
{
var customCulture = CustomCultureInfo.CurrentCulture;
return Task.Factory.StartNew((obj) =>
{
var culture = (CultureInfo) obj;
// use customCulture variable as needed
// inside the generated task.
}, customCulture);
}
I would definitely go with the former.
For more on closure, see What are 'closures' in .NET?