您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

线程,CultureInfo .net,TPL,PLINQ

5b51 2022/1/14 8:22:40 python 字数 2465 阅读 556 来源 www.jb51.cc/python

无法将整个.net应用程序设置为除.net中的用户配置文件之外的其他文化.控制cultureinfo的适当方法似乎是在DateTime等对象上使用专用方法. 但是,在处理大量遗留代码时(并非所有代码都在您的控制之下),这是不可能实现的.因此,可以例如创建Thread och Threadpool的子类/包装器,并在执行委托之前设置所需的cultureinfo,或者可以要求委托本身包含一组文化. (

概述

但是,在处理大量遗留代码时(并非所有代码都在您的控制之下),这是不可能实现的.因此,可以例如创建Thread och Threadpool的子类/包装器,并在执行委托之前设置所需的cultureinfo,或者可以要求委托本身包含一组文化. (难以验证并容易出现错误……)

看看TPL,更具体地说是PLINQ,但是我发现很难(如果不是不可能的话)以集中的方式改变文化环境.

在遗留代码中处理overriding thread / application-cultureinfo的任何建议?

谢谢!

我写了一个扩展名.为了那个原因:

public static class ParallelQueryCultureExtensions
{
    public static ParallelQuery<TSource> SetCulture<TSource>(this ParallelQuery<TSource> source,CultureInfo cultureInfo)
    {
        SetCulture(cultureInfo);
        return source
            .Select(
                item =>
                    {
                        SetCulture(cultureInfo);
                        return item;
                    });
    }

    private static void SetCulture(CultureInfo cultureInfo) {
        if (Thread.CurrentThread.CurrentCulture != cultureInfo) {
            Thread.CurrentThread.CurrentCulture = cultureInfo;
        }
    }
}

因此,如果您在使用.AsParallel()分割原始源之后使用它,您将得到您想要的.

CultureInfo kaCulture = CultureInfo.GetCultureInfo("ka-Ge");

    int[] array = new int[100];
    Random random =  new Random();
    int index =0;
    Array.ForEach(array,i => { array[index++] = index;});

    array
        .AsParallel()
        .SetCulture(kaCulture)
        .ForAll(
            i =>
                {
                    Thread.Sleep(random.Next(5));
                    Console.WriteLine("Thread-{0} \t Culture-'{1}' \t Element-{2}",Thread.CurrentThread.ManagedThreadId,Thread.CurrentThread.CurrentCulture,i);
                });

    Console.WriteLine("Press any key to quit");
    Console.ReadKey();

总结

以上是编程之家为你收集整理的线程,CultureInfo .net,TPL,PLINQ全部内容,希望文章能够帮你解决线程,CultureInfo .net,TPL,PLINQ所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶