Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF MetroDialog线程无法访问对象,因为另一个线程拥有该对象_C#_Wpf_Multithreading_Mahapps.metro - Fatal编程技术网

C# WPF MetroDialog线程无法访问对象,因为另一个线程拥有该对象

C# WPF MetroDialog线程无法访问对象,因为另一个线程拥有该对象,c#,wpf,multithreading,mahapps.metro,C#,Wpf,Multithreading,Mahapps.metro,我试图实现一个输入对话框,但我似乎不明白为什么在单击“确定”或“取消”时会出现线程问题 下面是我的代码段,在这里我创建了对话框并展示了它,我看了一些例子并给出了答案,但我不知道我在这里做错了什么 var metroDialogSettings = new MetroDialogSettings() { AffirmativeButtonText = "OK", NegativeButtonText = "CANCEL", AnimateHide = true, A

我试图实现一个输入对话框,但我似乎不明白为什么在单击“确定”或“取消”时会出现线程问题

下面是我的代码段,在这里我创建了对话框并展示了它,我看了一些例子并给出了答案,但我不知道我在这里做错了什么

var metroDialogSettings = new MetroDialogSettings()
{
    AffirmativeButtonText = "OK",
    NegativeButtonText = "CANCEL",
    AnimateHide = true,
    AnimateShow = true,
    ColorScheme = MetroDialogColorScheme.Accented,
};

var dialog = new AddStorageAccountDialog(MainWindowHelper.mainWindow, metroDialogSettings);


await Application.Current.Dispatcher.Invoke(async () =>
{
    await MainWindowHelper.mainWindow.ShowMetroDialogAsync(dialog);
    await dialog.WaitForButtonPressAsync().ContinueWith((m) =>
    {
        MainWindowHelper.mainWindow.HideMetroDialogAsync(dialog);
    });

    var displayname = dialog.DisplayName;
    var accountname = dialog.AccountName;
    var accountkey = dialog.AccountKey;
});  

MahApps.Metro的隐藏对话框方法不是一项任务吗?也许你应该把它从continueWith中拿出来,在WaitForButtonPessSync之后在线等待它。我试着把隐藏物移开,但没有用。嗯,你也在等待吗?是的,我在所有异步任务上都放了Wait。我的输入对话框是基于