sharepoint プロジェクトには、非常に重要なイベント レシーバーがあります。これまで、このプロジェクトの 7 つのバージョンがクライアント用にデプロイされています。これらのバージョンの 1 つが非常に不安定で遅いことが不思議です。ランダムに発生します。
注:ネットワーク速度は良好です。問題はプロジェクトにあります。
私はコードをチェックアウトし、エラー「ファイル 'FileName' が SHAREPOINT\system によって変更されました」をItemUpdated
処理する方法を見つけました。ループが発生することがあります。ItemAdded
SPListItem
base.EventFiringEnabled = false;
bool tryAgain = false; //used to handle "The file has been modified by SHAREPOINT\system"
do
{
tryAgain = false;
try
{
try
{
if (_item.File.CheckOutType == SPFile.SPCheckOutType.Online || _item.File.CheckOutType == SPFile.SPCheckOutType.Offline)
{
try
{
_item.File.CheckIn("prevent checkout/locked error");
}
catch (Exception ex) { }
}
_item.SystemUpdate(true);
}
catch (Exception ex)
{
throw ex; //-- used to handle "The file has been modified by SHAREPOINT\system"
}
}
catch (Exception ex) //-- used to handle "The file has been modified by SHAREPOINT\system"
{
if (ex.Message.ToLower().Contains("has been modified by"))
{
System.Threading.Thread.Sleep(1000 * 2);
tryAgain = true;
}
else
{
this.HandleException(ex, "");
}
}
} while (tryAgain == true);
この while ループには次の状態があります。
1-item は初めて更新され、例外はありません
2-更新の原因は例外であり、数回の反復後に更新されます
3-更新の原因は前述の例外であり、ループに陥り、200回の反復後でも更新されません。
この問題により、プロジェクトが不安定になり、動作が非常に遅くなることがあります。この状況を処理する最善の方法は何ですか?