由 Snackbar 引起的 C# ObjectDisposedException
C# ObjectDisposedException caused by Snackbar
我正在为 WPF/C# 使用 MaterialDesign Xaml 工具包,我想将 Snackbars(从下面弹出的消息栏)添加到我的应用程序。它有一个按钮,它被称为一个动作,与委托 Action
不同,为了简单起见,在此上下文中将其称为 btn_A3
。当任务完成或发现错误时,弹出窗口会显示消息,当 btn_A3
在 Exception
事件上单击时,它会在 [=] 中显示 Exception
堆栈跟踪17=], 谢天谢地,我以某种方式通过跟踪和错误设法实现了这一目标,因为互联网上的资源稀缺且令人困惑
但是当我关闭 MessageBox
时它会抛出 System.ObjectDisposedException : 'Safe handle has been closed'
这是我的代码
private void Button_Click(object sender, RoutedEventArgs e){
try{
int x = 0;
x = int.Parse(smpl.Text);
MessageBox.Show(x.ToString());}
catch (Exception ex) {
List<String> santa= new List<String>();
santa.Add(ex.Message);
foreach (var s in santa){
snackbar.MessageQueue.Enqueue(s,"SHOW ERROR", x => MessageBox.Show(ex.StackTrace), s);}}}
public void Enqueue<TArgument>(object content, object? actionContent, Action<TArgument?>? actionHandler, TArgument? actionArgument);
这个回答来自 @aepot 上面的人,感谢他,这让我完成了工作,谢谢!,现在您可以点击里面的按钮来显示您自己的消息
snackbar.MessageQueue.Enqueue(ex.Message, "SHOW ERROR", x => Dispatcher.BeginInvoke((Action)(() => MessageBox.Show(x.StackTrace))), ex);
我正在为 WPF/C# 使用 MaterialDesign Xaml 工具包,我想将 Snackbars(从下面弹出的消息栏)添加到我的应用程序。它有一个按钮,它被称为一个动作,与委托 Action
不同,为了简单起见,在此上下文中将其称为 btn_A3
。当任务完成或发现错误时,弹出窗口会显示消息,当 btn_A3
在 Exception
事件上单击时,它会在 [=] 中显示 Exception
堆栈跟踪17=], 谢天谢地,我以某种方式通过跟踪和错误设法实现了这一目标,因为互联网上的资源稀缺且令人困惑
但是当我关闭 MessageBox
System.ObjectDisposedException : 'Safe handle has been closed'
这是我的代码
private void Button_Click(object sender, RoutedEventArgs e){
try{
int x = 0;
x = int.Parse(smpl.Text);
MessageBox.Show(x.ToString());}
catch (Exception ex) {
List<String> santa= new List<String>();
santa.Add(ex.Message);
foreach (var s in santa){
snackbar.MessageQueue.Enqueue(s,"SHOW ERROR", x => MessageBox.Show(ex.StackTrace), s);}}}
public void Enqueue<TArgument>(object content, object? actionContent, Action<TArgument?>? actionHandler, TArgument? actionArgument);
这个回答来自 @aepot 上面的人,感谢他,这让我完成了工作,谢谢!,现在您可以点击里面的按钮来显示您自己的消息
snackbar.MessageQueue.Enqueue(ex.Message, "SHOW ERROR", x => Dispatcher.BeginInvoke((Action)(() => MessageBox.Show(x.StackTrace))), ex);