0

異なるリモート マシンで異なるインストールを開始しようとする .NET アプリケーションがあります。実際のインストールが行われる前に、アプリケーションはこれらのリモート マシンに接続し、リモート マシンごとに異なるスレッドを生成することによって、これらのインストールの既存のバージョンを取得します (各スレッドは、特定のインストールの既存のバージョンを取得する役割を果たします)。

特定のケースでは、既存のバージョンを 2 つの異なるマシンに取得するための 2 つの呼び出しがあり、一方の呼び出しには時間がかかり、もう一方の呼び出しには時間がかかりません。ここでの問題は、アプリケーションがスレッドを生成する順序が違いを生んでいることです。最初にバージョンを取得するのに時間がかかるスレッドを生成すると、リモート マシンに接続できないため、2 番目のスレッド (時間がかからない) が適切なバージョンを取得できません。最初にバージョンを取得するのに時間がかからないスレッドを生成すると、両方のスレッドが正しいバージョンを返します。何らかのリソースをめぐる競争があると感じています。手がかりはありますか?前もって感謝します。

いくつかのコード スニペット

class RemoteInstallable
{
//...other functions...
public override bool GetExistingVersion()
   {
            try
            {
                base.ExistingVersion = RemoteInstaller.GetExistingVersion(base.InstallInfo.VersionPath);
                return true;
            } 
   }
//....others..
};

GetAllVersions()
{
 foreach ( R as remoteinstallabe in ListofAllRemoteInstallables)
  {
    Thread T =  new Thread();
    //Use T to get version of R 
  }
}
4

0 に答える 0