В проекте sharepoint у меня есть приемники событий, которые так важны, пока 7 версий этого проекта не развернуты для клиентов. одна из этих версий настолько неустойчива и медленна. Иногда я имею в виду, когда обновляю элемент, который он придерживается. Это случается случайным образом.лучший способ обработки ошибки: файл «FileName» был изменен SHAREPOINT system
ПРИМЕЧАНИЕ: их скорость сети хорошая. Конечно, проблема в проекте.
Я проверил код и нашел способ, который имеет дело с ошибкой Файл «FileName» был изменен SHAREPOINT \ системы вызвать петлю, sometimes.this это код в 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);
это время цикл имеет следующие состояния:
1-элемент обновляется в первый раз и нет исключений
2-update вызывает упомянутое исключение, и он будет обновляться через несколько секунд, пока итерации
3-обновление вызывает упомянутое исключение, и оно вставляется в цикл и не будет обновляться даже после 200 итераций.
этот случай проблемы, когда проект нестабилен и иногда работает так медленно. Каков наилучший способ справиться с этой ситуацией?
спасибо, но Synchronous замедляет работу! моя проблема - скорость! –