C# 如何在定时器内给静态变量赋值?
问题描述:我想在定时任务中把其中一个变量赋值给一个静态变量,通过这种方式来实现变量共享。但是遇到了一个问题,那就是我的定时任务执行完了,静态变量也就销毁了,无法达到我的预期想法。
定时器代码:
`[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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
先确定一下是否是同一个进程,同一个进程的话,考虑一下AppDomin