У нас есть операция веб-службы WCF, которая используется для создания файлов PDF. Для этого мы используем сторонний инструмент (в частности, Syncfusion), который, возможно, не сможем заменить в данный момент.
Проблема в том, что кажется, что сторонний инструмент имеет проблему с многопоточностью и не работает в некоторых случаях, когда одновременно выполняется несколько вызовов веб-службы.
Мы можем избавиться от проблемы, используя lock
и убедившись, что только один поток выполняет критическую секцию:
Public Class GeneratorController
{
// object we use for lock
private static Object thisLock = new Object();
public void Generate(ref PdfDocument pdfDocument)
{
lock (thisLock)
{
// critical section
}
}
}
Мои вопросы: это хорошая идея? Не вызовет ли это каких-либо проблем, если у нас будет такой код в веб-сервисе?
Примечание
Это не вопрос о Syncfusion. Это вопрос об использовании lock
в веб-сервисе. Не меняйте теги на syncfusion, пожалуйста.