wcf - 我陷入僵局了吗?为什么?

标签 wcf multithreading deadlock asynchronous threadpool

我有一个需要调用WCF服务的Silverlight 3应用程序。 WCF服务又调用ASMX Web服务。 WCF服务调用完成后,需要更新silverlight UI。

WCF正在异步调用。

事实是,Silverlight应用程序需要调用WCF方法(此方法稍后会在内部调用asmx)数百次。我了解,因为它处于aSync中,因此会产生数百个线程,因此我在检查中进行了编码,以确保WCF函数被调用的时间不超过X倍。仅当1个通话完成时,我才添加一个通话。我希望这将继续检查线程总数。该X值的理想值是多少?我是一台具有双核CPU和4 GB内存的简单XP机器。

当WCF调用完成时,我需要在silverlight UI上显示进度栏。

这对于较少数量的调用来说效果很好,但是当我需要说约10000个调用时,一段时间后,我在Silverlight的WCFCompleted方法中获得了超时。我觉得我可能陷入僵局?

我的WCF配置为多个并发。

每次一个WCF调用完成时,它都会更新UI ...这可能导致此死锁吗?

有任何想法吗?我被困在这里,迷路了。

最佳答案

仅当一个线程分配一个资源并等待另一个资源,而另一个线程分配第二个资源并等待第一个资源时,才导致死锁。任何人都无法继续。

问题在于,当多个线程正在调用Windows UI时,它们都不知道Windows试图使用的内部资源。无法预测结果可能是什么;死锁是一种可能。

关于wcf - 我陷入僵局了吗?为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3323521/

相关文章:

linq - 使用 WCF、LINQ、JSON 时无法序列化 'System.Linq.Enumerable... ' 类型的参数

c# - 单例成员的线程安全使用

multithreading - 在 grails groovy 中运行线程

sql-server - SQL Server 2000 - 调试死锁

c - Bankers中避免死锁的算法

WCF 自签名证书在客户端上不受信任

c# - 动态 IL 方法导致 "Operation could destabilize the runtime"

c# - 简单的自动映射器示例

c++ - 使用 Interlocks 进行线程同步并保持缓存一致性

java - 解决获取多个锁时的死锁