【发布时间】:2020-08-28 08:04:15
【问题描述】:
我为我的 Winforms 应用程序创建了一个自定义 Toast 通知,每当返回自定义结果时,我使用 ShowMessage 扩展来显示通知。
在我的登录屏幕上,我有一个解锁应用程序按钮,只要密码不正确,该按钮就会显示烤面包机消息。
当我在 result.ShowMessage() 之前放置断点时;出现通知。但是当我删除断点时,它就不再出现了。我不会更改任何调试值。
我该如何解决这个问题?我确实尝试实现一个 thread.sleep 但它没有改变任何东西,只有当我插入断点并继续它时才会出现通知。
值得注意的是,通知在应用程序的其他任何地方都可以正常工作。
解锁应用程序代码:
private void UnlockApplication()
{
var result = new Business.Server.User().Get(_loginModel.UserName, _loginModel.Password.Encrypt());
if (result.IsSuccessful)
{
// Perform log in process
}
else
{
result.ShowMessage(); //Only works when I put breakpoint here
}
}
ShowMessage 扩展代码
public static void ShowMessage<T>(this Models.Result<T> result) where T : class
{
Helpers.ToasterNotificationHelper.ShowNotification(result.ResultTypeKey.ToDescription(), result.Message, result.ResultImage(), result.ResultColor(), result.ResultTypeKey == Enums.ResultTypeEnum.Warning ? 5000 : 2500);
}
public static void ShowNotification(string header, string message, Image icon, Color backgroundColor, int durationInMilliseconds = 1000)
{
if (Application.OpenForms[0] is MyApplication)
{
var toasterNotification = new ToasterNotificationControl(header, message, icon, backgroundColor);
(Application.OpenForms[0] as MyApplication).toastNotificationCollectionControl1.AddNotification(toasterNotification, durationInMilliseconds);
}
}
我的 Toast Notification 控件是添加到主应用程序表单的 DevExpress 弹出面板控件
【问题讨论】:
-
这个方法“Business.Server.User().Get....”是异步的吗?
-
看来你需要
await要完成的任务 -
不,不是,我试过让方法异步,但没有用
-
@TuxedoMan 何时调用“UnlockApplication()”?
-
点击解锁按钮
标签: c# winforms devexpress