C# BackgroundWorker等待用户输入的对话框
我可以从BackgroundWorker打开对话框并暂停它直到用户决定吗C# BackgroundWorker等待用户输入的对话框,c#,wpf,multithreading,backgroundworker,C#,Wpf,Multithreading,Backgroundworker,我可以从BackgroundWorker打开对话框并暂停它直到用户决定吗 MyWorker = new System.ComponentModel.BackgroundWorker(); MyWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(CopyWorker_DoWork); MyWorker.RunWorkerAsync(); private void MyWorker_DoWork(object sender,
MyWorker = new System.ComponentModel.BackgroundWorker();
MyWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(CopyWorker_DoWork);
MyWorker.RunWorkerAsync();
private void MyWorker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
int i=0;
while ((i) < collection.Count())
{
cListEntry item = collection[i];
if (item.conflicted ==true) {
Dispatcher.BeginInvoke(new Action(() =>
{
var dialog = new WindowConflict();
//Open dialog and wait for user action
if (dialog.ShowDialog() == true)
{
item.level = dialog.Response;
}
MyWorker=new System.ComponentModel.BackgroundWorker();
MyWorker.DoWork+=新系统.ComponentModel.DoWorkEventHandler(CopyWorker\u DoWork);
MyWorker.RunWorkerAsync();
私有void MyWorker_DoWork(对象发送方,System.ComponentModel.DoWorkEventArgs e)
{
int i=0;
而((i)
{
var dialog=new WindowConflict();
//打开对话框并等待用户操作
if(dialog.ShowDialog()==true)
{
item.level=dialog.Response;
}
您应该使用invoke而不是begininvoke,begininvoke允许任务继续运行,但您希望它等待。使用.invoke而不是.begininvoke可以正常工作。但是您不应该这样做。窗口冲突是什么?@Henkholtman,我不这么认为。唯一的区别是invoke
是>当BeginInvoke
是Send
但两者都发送到调度程序的同步上下文时,Post
。@HamletHakobyan-Milo希望Bgw等待结果。这就是区别。BackgroundWorker上的用户对话框?为什么?