在独立线程中的类内部的类属性
本文关键字:属性 内部 独立 线程 | 更新日期: 2023-09-27 18:14:07
我有一个宿主类,它在一个新线程上启动另一个类的实例,如下所示:
我引用了这篇MSDN文章,根据这篇文章,Class2。P1不应该为空。链接:http://msdn.microsoft.com/en-us/library/system.threading.threadstart.aspx
我错过了什么明显的吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
new Host().DoWork();
}
}
public class Host {
Class2Parent c = new Class2();
Thread t;
public void DoWork() {
c.P1 = new Class3();
t = new Thread(c.Start);
t.Start();
}
}
public class Class2Parent {
public Class3 P1 = null;
public virtual void Start() {}
}
public class Class2 : Class2Parent {
public Class3 P1 = null;
public override void Start() {
Console.WriteLine(P1 == null); // this is always true
}
}
public class Class3
{}
}
您可以尝试使用计时器变量创建一个新线程,就像这样:
private Timer m_RequestTimer;
public void Begin()
{
// Timer check
if (m_RequestTimer != null)
{
m_RequestTimer.Change(Timeout.Infinite, Timeout.Infinite);
m_RequestTimer.Dispose();
m_RequestTimer = null;
}
m_RequestTimer = new System.Threading.Timer(obj => { c.Start(); }, null, 250, System.Threading.Timeout.Infinite);
}
}
其中m_RequestTimer是类host的一个属性,Begin是host的一个方法。
希望对你有帮助=)