首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#线程没有设置其他类的变量值吗?

C#线程没有设置其他类的变量值吗?
EN

Stack Overflow用户
提问于 2013-05-30 15:26:41
回答 2查看 85关注 0票数 0

下面是我的测试代码:

代码语言:javascript
复制
  class Program
{
    static void Main(string[] args)
    {
        new Thread(delegate() { runThread(); }).Start();

        Console.WriteLine(Global.test);
        Console.ReadKey();
    }
    private static void runThread()
    {
        Console.WriteLine("this is run thread");
        Global.test = "this is test from thread";

        Console.WriteLine(Global.test);
    }
}
public class Global
{

    public static string testV { get; set; }
}

我希望能够使用线程设置"testV“值。看起来线程确实设置了值,但是当从testV方法中检索main值时,它没有给出任何值。为什么会这样呢?

EN

Stack Overflow用户

回答已采纳

发布于 2013-05-30 15:28:53

不能保证在主线程调用WriteLine时已经设置了Global.test。要查看效果,您可以尝试在写出它之前休眠一小段时间,以证明另一个线程已经修改了它。

此外,值得注意的是,全局静态testV不是线程安全的,因此未定义的行为将在您的未来。

票数 4
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16830335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档