C# 任务并行库中的日期格式问题
如果我称这种方法为顺序性C# 任务并行库中的日期格式问题,c#,task-parallel-library,C#,Task Parallel Library,如果我称这种方法为顺序性 object[] ab = GetSomething(myObject); 我得到了这样的日期时间格式,这是可以的 知道我是否使用tpl来调用此方法吗 Task t1 = Task.Factory.StartNew(() => GetSomething(myObject)); Task t2 = Task.Factory.StartNew(() => GetSomeOtherthing(myObject)); Task.WaitAll(t1, t2);
object[] ab = GetSomething(myObject);
我得到了这样的日期时间格式,这是可以的
知道我是否使用tpl来调用此方法吗
Task t1 = Task.Factory.StartNew(() => GetSomething(myObject));
Task t2 = Task.Factory.StartNew(() => GetSomeOtherthing(myObject));
Task.WaitAll(t1, t2);
我用AM/PM得到了这种格式,这导致转换失败,比如说无效的datetime格式,有没有办法像顺序方法一样更改datetime formart
如何将字符串转换为datetime
Search.Date = Convert.ToDateTime(myObject.ToDate, CultureInfo.InvariantCulture);
在从/转换为字符串时始终显式指定区域性
在您的情况下,线程池线程的当前区域性可能与您所期望的不同。如果要更改线程的区域性,请创建您自己的任务计划程序,该程序了解应用程序区域性。调度程序可以在执行任务之前调整区域性 这是一个示例调度程序
class LocalizedTaskScheduler : TaskScheduler
{
public CultureInfo Culture { get; set; }
public CultureInfo UICulture { get; set; }
#region Overrides of TaskScheduler
protected override void QueueTask(Task task)
{
//Queue the task in the thread pool
ThreadPool.UnsafeQueueUserWorkItem(_ =>
{
//Adjust the thread culture
Thread.CurrentThread.CurrentCulture = this.Culture;
Thread.CurrentThread.CurrentUICulture = this.UICulture;
//Execute the task
TryExecuteTask(task);
}, null);
}
protected override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued)
{
if (taskWasPreviouslyQueued)
{
return false;
}
// Try to run the task.
return base.TryExecuteTask(task);
}
protected override IEnumerable<Task> GetScheduledTasks()
{
//We have no queue
return Enumerable.Empty<Task>();
}
#endregion
}
class LocalizedTaskScheduler:TaskScheduler
{
公共文化信息文化{get;set;}
公共文化信息UICulture{get;set;}
#TaskScheduler的区域覆盖
受保护的覆盖无效队列任务(任务任务)
{
//在线程池中对任务进行排队
ThreadPool.UnsafeQueueUserWorkItem(=>
{
//调整线程区域性
Thread.CurrentThread.CurrentCulture=此.Culture;
Thread.CurrentThread.CurrentUICulture=此.UICulture;
//执行任务
TryExecuteTask(任务);
},空);
}
受保护的覆盖bool TryExecuteTaskInline(任务任务,bool任务先前排队)
{
如果(任务先前已排队)
{
返回false;
}
//尝试运行任务。
返回base.TryExecuteTask(任务);
}
受保护的重写IEnumerable GetScheduledTasks()
{
//我们没有排队
返回可枚举的.Empty();
}
#端区
}
GetSomething设置日期的代码是什么?@iam使用Convert.ToDateTime(myObject.ToDate)是字符串格式的下一个问题是myObject
上的ToDate
是什么?财产?它是如何实施的?它的数据类型是什么?@JesseC.Slicer是字符串类型的属性。它可能是调试器的工件,也可能是您正在某处更改线程的CultureInfo。是否有方法将threadpool threads CurrentCulture更改为特定的。@AI25我会避免这种情况DateTime.Parse
和类似的函数都有一个接受区域性的参数。使用那个。如果您使用的库使用DateTime.Pars/DateTime.ToString而不传递特定的CultureInfo。。。我认为您需要在线程上设置CurrentCulture。