相关疑难解决方法(0)

如何使用WPF后台工作程序

我是WPF的初学者,在我的应用程序中,我需要执行一系列初始化步骤,这些步骤需要7-8秒才能完成,在此期间我的UI变得无法响应.为了解决这个问题,我在一个单独的线程中执行初始化:

public void Initialization()
{
    Thread initThread = new Thread(new ThreadStart(InitializationThread));
    initThread.Start();
}

public void InitializationThread()
{
    outputMessage("Initializing...");
    //DO INITIALIZATION
    outputMessage("Initialization Complete");
}
Run Code Online (Sandbox Code Playgroud)

我已经阅读了一些文章BackgroundWorker,关于它应该如何允许我保持我的应用程序响应,而不必编写一个线程来执行冗长的任务,但我没有成功地尝试实现它,任何人都可以告诉我怎么做这个使用BackgroundWorker

谢谢,Eamonn

c# wpf multithreading backgroundworker

174
推荐指数
3
解决办法
17万
查看次数

如何在C#和MVVM中实现异步操作?

什么是在WPF和MVVM上实现异步操作的最简单方法,让我们说如果用户在某个字段上输入时我想要启动命令然后返回,而线程将执行一些搜索操作然后返回更新属性,以便通知可以更新绑定.

谢谢!

c# wpf binding asynchronous mvvm

9
推荐指数
2
解决办法
5335
查看次数

WPF MVVM更新后台工作者的视图模型

这个senerio有效吗?

我有一个View来维护一个Item.

我有View Model,它将Item对象(实现INotifyPropertyChanged)公开为View绑定的Property.

将Item对象传递给修改它的Backgroundworker是否有效,然后在BackgroundWorking完成时引发PropertyChanged事件?

或者BackgroundWorker不应该修改Item对象.我将使用BackgroundWorker传回的结果更新现有的Item对象.这将在RunWorkerCompleted事件中完成.但这会锁定UI线程并击败拥有背景工作者的对象吗?

困惑?

我会试着解释一下.

用户可以选择创建项目.我创建了视图和视图模型.在View模型中,创建一个空Item对象.他被提供了一个视图来维护项目.在选择"项类型"属性时,这会启动一个复杂的过程来创建用户输入的权限列表.我可以在创建列表时阻止UI线程,但这会给用户带来糟糕的体验.我想将处理传递给后台线程,同时保持UI活着.目前,我设置了一个标志来指示View正在加载的部分,将Item对象传递给BackgroundWorker,后者更新了可观察的Properties集合.当BackgroundWorking完成后,我调用PropertyChanged事件,该事件更新绑定到列表的View部分,并关闭该标志以指示该部分正在加载.这似乎没有任何问题.但我有一种直觉,我不应该在后台线程中更新视图模型中的绑定项.

谢谢蒂姆

wpf mvvm backgroundworker

7
推荐指数
1
解决办法
5158
查看次数

在WPF中执行异步任务的推荐方法是什么?

是否有任何标准工具或推荐的异步任务执行方法?

UPD我明白了,如何使用线程.我只需要知道在执行异步调用时阻止UI的推荐WPF方式,以及如何更新进度信息.

.net c# wpf asynchronous

6
推荐指数
1
解决办法
8510
查看次数

标签 统计

wpf ×4

c# ×3

asynchronous ×2

backgroundworker ×2

mvvm ×2

.net ×1

binding ×1

multithreading ×1