gpt4 book ai didi

C# WCF NetTCPBinding 阻塞应用程序

转载 作者:太空狗 更新时间:2023-10-29 21:55:33 25 4
gpt4 key购买 nike

我有一个基本的好友列表类型的应用程序,它是 WCF 中的发布/订阅交易。我的问题是其中一两个调用长时间运行,这会阻塞整个服务器应用程序(GUI 更新等)。

这是我的代码:

[ServiceContract(SessionMode = SessionMode.Required,
CallbackContract = typeof(IBuddyListContract))]
public interface IBuddyListPubSubContract
{
[OperationContract]
string GetABunchOfDataZipped(String sessionId); // this can take > 20 seconds

....
}

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall,
ConcurrencyMode = ConcurrencyMode.Multiple)]
public class BuddyListPubSubContract : IBuddyListPubSubContract
{
string GetABunchOfDataZipped(String sessionId)
{
// do some calculations and data retrival
return result;
}
}

到目前为止,我对如何着手有了一个想法,但有没有更简单的方法?

想法 1:让 GetABunchOfDataZipped(String sessionId) 无效,当它完成时在我的双工契约(Contract)上有另一个端点,我点击了它。我不喜欢这样,因为这好像是我的体系结构发生根本性变化,如果字符串是一个大块文本,在较慢的 Internet 连接上它仍然会遇到同样的问题?

最佳答案

My problem is one or two of the calls are long running and this blocks up the entire server application (gui updates etc).

您不清楚在哪里看到阻塞行为,但听起来像是在客户端。您应该从后台线程而不是 UI 线程调用 WCF 服务。然后当您处理结果时,您将无法直接与您的 UI 元素交互,您将需要使用每个控件的 Invoke 方法。

关于C# WCF NetTCPBinding 阻塞应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6192294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com