【发布时间】:2010-11-29 20:18:00
【问题描述】:
我有一个 WCF 服务,它有很多只读取数据的接口。然而,有一个接口可以从数据库重新加载数据并重新初始化一些字典。当这个界面“重新加载”正在运行时,我实际上希望所有其他调用都被“搁置”,因为它们会读取未知状态的数据(因为我正在使用每次调用)
[ServiceContract]
public interface IMyObject
{
[OperationContract]
string Reload();
[OperationContract]
string Read1();
[OperationContract]
string Read2();
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
class MyObject : IMyObject
{
public string Reload() { //Takes 5-10secs, called twice a day }
public string Read1() { //Wait for Reload() to finish if it's running}
public string Read2() { //Wait for Reload() to finish if it's running}
}
这在 WCF 中可行吗?或者有解决这个问题的最佳实践方法吗?
【问题讨论】:
标签: c# wcf web-services concurrency