我们有一个用于生成 PDF 文件的 WCF Web 服务操作。我们正在使用第 3 方工具来执行此操作(特别是 Syncfusion),目前我们可能无法替换它。
问题是 3rd 方工具似乎存在多线程问题,并且在某些情况下同时对 Web 服务进行多次调用时不起作用。
我们可以通过使用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
}
}
}
我的问题是:这是个好主意吗?如果我们在 Web 服务中有这样的代码,它会导致任何问题吗?
笔记
这不是关于 Syncfusion 的问题。这是关于lock
在 Web 服务中使用的问题。请不要将标签更改为同步融合。