【发布时间】:2015-01-04 04:30:26
【问题描述】:
在我的 WPF - C# 应用程序中,我有一个耗时的函数,我使用 BackgroundWorker 执行该函数。此函数的工作是将给定数据从文件添加到数据库中。有时,我需要一些用户反馈,例如数据已经在存储中,我想问用户,他是要合并数据还是创建新对象或完全跳过数据。就像对话框窗口显示的一样,如果我尝试将文件复制到已存在同名文件的位置。
问题是,我不能从非 GUI 线程调用 GUI 窗口。我该如何实现这种行为?
提前致谢,
弗兰克
【问题讨论】:
-
你在使用 WPF 吗?或者,您使用的是 WinForms 吗?
-
我使用 WPF ...将此信息添加到问题中
-
你在做 MVVM 吗?如果是这样,那么,您可以使用 INotifyPropertyChanged 进行设计,以从 ViewModel(甚至是 Model)获取 View 的事件;如果您使用 MVVM,我可以为您提供或指出答案。
-
解决这个问题最好的办法是使用 Dispatcher.Invoke 或 Dispatcher.BeginInvoke。
标签: c# multithreading user-interface backgroundworker