【发布时间】:2012-08-23 15:13:08
【问题描述】:
我得到了使用 WCF 向服务器请求数据的代码。
例如:
public static Company LoadCompanyInfo(Guid session)
{
var client = new QualerServiceClient("QualerService");
return client.GetCompanyInfo(session);
}
我需要让我的 wpf 应用程序异步运行这些代码。
我试试:
public static Company LoadCompanyInfoAsync(Guid session)
{
var client = new QualerServiceClient("QualerService");
client.BeginGetCompanyInfo(session, new AsyncCallback(EndLoadCompanyInfoAsync), client);
// How to Get Data from AsyncCallback function?
return null;
}
private static void EndLoadCompanyInfoAsync(IAsyncResult r)
{
var client = r.AsyncState as QualerServiceClient;
var result = client.EndGetCompanyInfo(r);
// how to return the result value ??
}
但我不知道如何从回调函数返回数据。
我有方法:
BeginGetCompanyInfo 和 EndGetCompanyInfo
GetCompanyInfoAsync
和事件:
- GetCompanyInfoCompleted。
问题:
如何从回调方法中获取数据?
GetCompanyInfoAsync和Begin\End有什么区别?最佳实践:如何异步执行方法,使我的 WPF 应用程序的 GUI 不死机?
【问题讨论】:
-
我们不知道 QualerServiceClient 来自哪里...
-
这有关系吗?我想知道,如何从回调和列表中的其他一些问题中获取数据。
-
它在哪里有点重要,因为您正在调用它的一个函数。如果你想了解 AsycnCallbacks:stackoverflow.com/questions/1047662/what-is-asynccallback 在 WPF 中异步执行代码的最佳实践通常是使用后台工作线程。
-
一般来说,问题应该限制在一个单一的、包含的问题上,该问题有一个或多个单一的、包含对一个相同问题的答案。 =)
标签: c# .net wcf asynchronous