【发布时间】:2013-10-09 03:05:33
【问题描述】:
我们有一个用于生成 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 的问题。这是关于在 Web 服务中使用 lock 的问题。请不要将标签更改为同步融合。
【问题讨论】:
-
我不熟悉 Syncfusion - 是否可以创建对象的多个并发实例?我认为如果您有不同的实例,则不需要锁定。
-
我也是这样,但这似乎是问题所在。也许他们在他们的代码中使用了一些静态的东西......
标签: c# multithreading wcf web-services locking