gpt4 book ai didi

c# - WinRT 中的后台任务

转载 作者:行者123 更新时间:2023-12-03 18:37:07 28 4
gpt4 key购买 nike

情况:

我从不同的互联网位置获取 json 对象。

这些包含我放在 BingMap 上的许多地理坐标。效果非常好。

问题:

但是当我从互联网位置获取数据时,我得到了一个阻塞的用户界面。有没有办法在后台运行它?

我尝试了异步功能,但我也遇到了一个阻塞的 UI..

这里是一些代码来电者

public async void Caller_Click(){
await jsonDataClass.DoOperations();
}

jsonDataClass中的方法

public async Task<bool> DoOperations(){
// do requests and some stuff..
var fetchedElements = getdata(); // not async, because its in a portable lib
foreach (var element in fetchedElements)
OnEvent(element); // raises an event to assing the element to the Bing map
}

最佳答案

不要忽略编译器警告。特别是,如果您有一个不使用 awaitasync 方法,那么编译器会特别告诉您该方法不是异步的并将同步运行。

我建议的第一件事是更改 getdata 使其成为 asyncMicrosoft.Bcl.Async NuGet 包扩展了对可移植类库的async 支持。

如果那不可能,那么您将不得不在后台线程上执行 getdata,如下所示:

public async Task<bool> DoOperations()
{
var fetchedElements = await Task.Run(() => getdata());
foreach (var element in fetchedElements)
OnEvent(element);
}

附言术语“后台任务”有一个 special meaning in WinRT .您实际需要的是在线程池线程(或后台线程)上运行代码,这与 WinRT 所说的“后台任务”不同。

关于c# - WinRT 中的后台任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18635742/

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