【问题标题】:.NET Task executed in one Thread.NET 任务在一个线程中执行
【发布时间】:2011-06-28 10:42:49
【问题描述】:

我可以相信Task 总是在一个线程中执行的事实吗?它可以是任何一个,但它应该对整个身体都一样,因为我需要正确设置线程的Culture

Task bind = Task.Factory.StartNew(() =>
{
    Thread.CurrentThread.CurrentCulture = culture;

    // do some asp.net binding stuff with automatic
    // date formatting

    gridView.DataSource = table;
    gridView.DataBind();
}

如果我不能,是否有一个参数来获得这种行为?

干杯,马蒂亚斯

【问题讨论】:

  • 我不相信不同线程上的数据绑定会很好地发挥作用......尤其是,http-context 会消失
  • 好点,不知道。我稍微重构了代码,以便异步接收数据并以同步方式绑定。这才是正确的方法,不是吗?
  • 是的,但前提是您在获取它时还有其他有用的事情要做。即“开始异步”、“做其他事情”、“加入异步”、“数据绑定”很好,但“开始异步”、“加入异步”、“数据绑定”是没有意义的。

标签: c# asp.net .net-4.0 task culture


【解决方案1】:

我相信为任何特定任务指定的代码将在一个线程上执行 - 但可能不会继续。如果任务是线程敏捷的在任务主体内,编写有效代码将非常困难,所以我很确定你没问题。

另一方面,如果您在任何相关的地方明确使用文化,您的代码可能最终会变得更简洁。根据 ASP.NET 的情况,这可能不可行,但如果可能的话,值得考虑。

【讨论】:

  • 谢谢乔恩。我尝试显式传递一个文化,但我没有找到办法(DataSource setter,DataBind 方法)。但是,我同意这将是最优雅的方式。
【解决方案2】:

是的,任务主体在一个线程中执行,除非您启动子任务或显式创建其他线程(线程、线程池等)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 2016-02-21
    • 2011-08-05
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 2018-10-07
    相关资源
    最近更新 更多