当前位置:  开发笔记 > 编程语言 > 正文

函数评估要求所有线程都运行-MVC

如何解决《函数评估要求所有线程都运行-MVC》经验,为你挑选了1个好方法。

将值从模型传递到If语句中的参数时,发生以下错误。

这是发生问题的代码,我很确定它不是ValidateUserPassword方法。

if (PSFNetSystem.ValidateUserPassword(model.Server, model.Username, model.Password) < 0)
{
    ModelState.AddModelError("Password", "Failed to login");
    return View(model);
}

任何帮助表示赞赏,谢谢。



1> Patrick Nels..:

简短答案: 您可以单击右侧的“线程”图标来强制评估。

长答案: 当您在调试器中评估方法时,调试器/ CLR将当前线程的上下文设置为要评估的方法,设置保护断点,冻结除当前线程以外的所有线程,然后继续执行该过程。当达到断点时,调试器将线程还原到其先前的状态,并使用返回值填充窗口。

因为只有一个线程在运行,所以如果评估线程获取另一个线程已经持有的锁,则有可能创建死锁情况。如果CLR检测到可能的死锁,则中止评估,调试器最终显示该消息。

单击该按钮允许所有线程运行,这意味着我们在重试评估时不会冻结其他线程。这将允许进行评估,但缺点是忽略了其他线程上的断点。

顺便说一句,如果您编写的代码知道在评估后可能会死锁,则可以调用Debugger.NotifyOfCrossThreadDependeny。这将导致您看到的行为。

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有