0

次のように、新しいスレッドで別のクラスのインスタンスを起動するホスト クラスがあります。

Class2.P1 が null であってはならないこの MSDN の記事を参照しています。リンク: 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 
   {}
}
4

1 に答える 1

0

そのようにタイマー変数を使用して新しいスレッドを作成することができます:

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 のメソッドを開始します。

私はそれがあなたを助けることを願っています=)

于 2013-05-17T07:51:57.267 に答える