gpt4 book ai didi

c# - 我可以在没有 Silverlight 的情况下访问 ExecuteQueryAsync 吗?

转载 作者:行者123 更新时间:2023-11-30 18:28:08 25 4
gpt4 key购买 nike

我正在开发一项连接到 Sharepoint 以检索数据的服务。我想让它尽可能异步。

但是,它看起来像 Client Components SDK用于标准 .NET 的 Microsoft.Sharepoint.Client 不附带任何异步功能。典型的例子是 ExecuteQuery 函数,它确实有一个重载 ExecuteQueryAsync 但它只存在于 Microsoft.SharePoint.Client.Silverlight.dll 中或 Microsoft.SharePoint.Client.Phone.dll 作为 documentation州。

有没有办法以某种方式访问​​此异步功能?我不确定我是否可以直接在我的代码中尝试使用 Silverlight dll,或者这是否会在以后导致问题。很确定会的。是否有任何其他 API 可以让我做我想做的事情?

最佳答案

您可以使用 TaskCompletionSource 创建一个包装器来使此任务异步执行

包装这个

public override void ExecuteQueryAsync(
ClientRequestSucceededEventHandler succeededCallback,
ClientRequestFailedEventHandler failedCallback
)

您可以将其作为扩展方法提供:

public static class ClientExtension
{
public static async Task<bool> ExecuteQueryAsync(this ClientContext ctx)
{
TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>();
ctx.ExecuteQueryAsync(
(s, e) => t.SetResult(true),
(s, e) => t.SetException(e.Exception));
return tcs.Task;
}
}

要调用这个,你可以申请

await client.ExecuteQueryAsync();

关于c# - 我可以在没有 Silverlight 的情况下访问 ExecuteQueryAsync 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25639829/

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