c# - 如何让两个轮询运行 WPF?
问题描述
private async void InitialiseApp(object sender, RoutedEventArgs e)
{
// The first two function run once
await InitManifest();
await InitResult();
await UpdateManifest(_ManifestToken.Token);
await UpdateResult(_ResultToken.Token);
}
public async static Task UpdateManifest(CancellationToken token)
{
while (true)
{
await Task.Delay(45000);
}
}
我的情况是我有两种类型的 json 数据。
第一个 json(有多个链接(对象)): {"name":"Link 1","id":22,"url":"link1.json"}
第二个json(有多个人对象):{“name”:“john”,“age”:22,“class”:“mca”}
第一个 json 包含包含第二种类型 json 数据的链接。
我想将所有链接的名称放在 a 中Listbox
,并且我有第二个“列表框”,它显示第一个“列表框”中所选项目的数据。
我最大的挑战是两个 json 更新第一个将每 45 秒轮询一次,第二个 ¬Listbox¬ 轮询非常 15 秒。
我创建了一个函数,它可以Listbox
成功地异步初始化两个 的数据。但现在我想独立更新两个“列表框”,而不阻塞 UI 线程。我确实调用了两次民意调查,但我设置了一个断点,并且我意识到代码没有进入第二次民意调查。我明白为什么,但我不确定如何解决这个问题。
解决方案
好吧,你await
的任务。这意味着您等待他们完成。而且您不想等待他们完成,因为他们从不这样做,所以不要等待他们。删除await
那些你不想等待的任务前面的关键字。
您可能希望也可能不希望将结果任务作为变量,您可以通过将方法的结果分配给Task
.
您当前的问题将通过await
从您不想等待的那些行中删除关键字来解决。其他问题将随之而来,这在 UI 中的多线程中很常见。
推荐阅读
- microservices - REPLICATE DATA 模式是最小化同步微服务通信的好选择吗?
- javascript - 单击按钮时如何将自定义文本复制到剪贴板?
- python - 使用 pyautogui 模块在 python 中打开图像
- excel - 搜索外部链接时 Excel VBA 代码错误“1004”
- flutter - 更新时所有下拉列表更新|| 颤动 ||
- r - 空间 R - 计算点周围的密度
- java - Intellij SpringBoot Maven 依赖问题
- python - 使用 uwsgi 提供的安全静态文件
- python - 如何在Python中为股票组合(例如:滚动风险价值,VaR)循环函数?
- python - AttributeError:模块“django.db.models”没有属性“IntegerChoices”