c# - Winforms,仅使用断点控制
问题描述
我为我的 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 通知控件是添加到主应用程序窗体的 DevExpress 弹出面板控件
解决方案
您的“Get(_loginModel.UserName ...”似乎是异步的。尝试执行下一步以使呼叫可等待:
private async System.Threading.Tasks.Task UnlockApplicationAsync()
{
var result = await new Business.Server.User().Get(_loginModel.UserName, _loginModel.Password.Encrypt());
...
推荐阅读
- android - GradleException:Lint 在组装发布目标时发现致命错误
- java - 尝试使用字符比较来增加计数器
- java - 删除文件 .java Maven 项目
- python - VHDL 中的 rs232 接收器根本无法正确保存数据
- postgresql - 根据外键更新唯一 ID(以 1 开头),唯一 ID 将再次以 1 开始下一个外键
- python - 如何按顺序生成天然产物?
- junit - 在没有 PowerMock 的情况下模拟类内的对象
- javascript - 如何通过过滤功能改进自制的 SQL 语法?
- ios - 如何设置一个整数值作为导航栏的标题?
- eloquent - 雄辩,如果两个表中的任何一个中都存在一个值,如何选择行?