C# 如何在定时器内给静态变量赋值?

发布于 2022-09-12 00:38:48 字数 2429 浏览 19 评论 0

问题描述:我想在定时任务中把其中一个变量赋值给一个静态变量,通过这种方式来实现变量共享。但是遇到了一个问题,那就是我的定时任务执行完了,静态变量也就销毁了,无法达到我的预期想法。

定时器代码:
`[SampleManagerTask("EntityManagerTask")]

public class EntityManagerTask : SampleManagerTask, IBackgroundTask
{
    public void Launch()
    {
        Logger.Info("开始执行EntityManager Task...");
        Test();
    }

    public void Test()
    {
        for(int i = 0; i < 10; i++)
        {
            if (EntityManagerHelper.EntityManager == null)
            {
                Logger.Info("开始给EntityManagerHelper.EntityManager赋值!");
                EntityManagerHelper.EntityManager = EntityManager;
            } else
            {
                Logger.Info("EntityManagerHelper.EntityManager值已存在,无需赋值!");
            }
        }
    }
}`

静态变量代码:
`public class EntityManagerHelper

{
    public static IEntityManager EntityManager { get; set; }
}`

以及运行日志:
`[Start command at 2019-11-21 19:40:02,897]
Successfully Logged into SampleManager as SYSTEM
开始执行EntityManager Task...
开始给EntityManagerHelper.EntityManager赋值!
EntityManagerHelper.EntityManager值已存在,无需赋值!
EntityManagerHelper.EntityManager值已存在,无需赋值!
EntityManagerHelper.EntityManager值已存在,无需赋值!
EntityManagerHelper.EntityManager值已存在,无需赋值!
EntityManagerHelper.EntityManager值已存在,无需赋值!
EntityManagerHelper.EntityManager值已存在,无需赋值!
EntityManagerHelper.EntityManager值已存在,无需赋值!
EntityManagerHelper.EntityManager值已存在,无需赋值!
EntityManagerHelper.EntityManager值已存在,无需赋值!
[End command at 2019-11-21 19:40:02,898]

[Start command at 2019-11-21 19:41:00,077]
Successfully Logged into SampleManager as SYSTEM
开始执行EntityManager Task...
开始给EntityManagerHelper.EntityManager赋值!
EntityManagerHelper.EntityManager值已存在,无需赋值!
EntityManagerHelper.EntityManager值已存在,无需赋值!
EntityManagerHelper.EntityManager值已存在,无需赋值!
EntityManagerHelper.EntityManager值已存在,无需赋值!
EntityManagerHelper.EntityManager值已存在,无需赋值!
EntityManagerHelper.EntityManager值已存在,无需赋值!
EntityManagerHelper.EntityManager值已存在,无需赋值!
EntityManagerHelper.EntityManager值已存在,无需赋值!
EntityManagerHelper.EntityManager值已存在,无需赋值!
[End command at 2019-11-21 19:41:00,078]`

我目前设置的是一分钟运行一次。理想状态应该是,运行第一次定时任务,进入第一个循环,才会给静态变量赋值。往后,不管是第几次运行定时任务,都不会给静态变量赋值,以为静态变量已经有值了!
但是发现每当我执行定时任务的时候,第一次拿出来的静态变量永远是空的。

现在目前怀疑可能是因为定时器线程的原因造成的,但是也不确定。

还希望有知道的大佬能够指点一番,非常感谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

等你爱我 2022-09-19 00:38:48

先确定一下是否是同一个进程,同一个进程的话,考虑一下AppDomin

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文