これらのプロパティは、静的ヘルパー クラスで作成しました。
private static ServerManager IISServerManager
{
get
{
if (mIISServerManager== null)
{
mIISServerManager= new ServerManager();
}
return mIISServerManager;
}
}
private static SiteCollection Sites
{
get
{
try
{
return IISServerManager.Sites;
}
catch (Exception)
{
return null;
}
}
}
Helper メソッドを呼び出すとき
public static bool VirtualDirectoryExists(string dirName, string siteName)
{
if (!String.IsNullOrEmpty(dirName) && (Sites != null))
{
Site site = Sites[siteName];
...
このヘルパーを (メイン スレッドで) 使用するコードでは、すべてのサイトとそのプロパティを正しく取得します。
一方、このヘルパーを使用するコードで呼び出すと (バックグラウンド ワーカー スレッドで) SitesCollection が取得されますが、インデクサー [siteName] でサイトを取得するとコードがフリーズします。
Site site = Sites[siteName];
(デッドロックのように見えますが、私の側からのロックはありません)