【问题标题】:Visual Studio 2012 MVC 3 multiple unwanted threadsVisual Studio 2012 MVC 3 多个不需要的线程
【发布时间】:2012-11-20 15:17:06
【问题描述】:

我有一个在 Visual Studio 2012 中创建并一直在使用的 MVC 3 C# 项目。我也在使用实体框架。调试时,我得到已知的“自上一步以来进程或线程已更改”。调试图标上的消息。有一段时间,它并没有改变程序的行为,所以我忽略了它。

然而,最近,我收到了相同的消息和行为(调试器跳回到断点所在的已执行方法的开头),只是现在我的代码实际上被执行了两次。我的意思是现在任何数据库插入都至少运行两次。知道我也在使用实体框架可能会有所帮助,并且我的插入都是通过导入一个执行简单插入的存储过程来完成的。

在我的代码中,我没有明确地启动新线程或尝试执行任何多线程。我对多线程不是很熟悉,但是当我调试和使用线程窗口时,我看到一个主线程有7个线程,还有两个工作线程。 (对不起,我会发布一张图片,但我是新用户,他们不会让我这样做)。

然后,当我按F5继续时,我的单断点又被击中,我看到一个主线程,3个线程,6个!!工作线程。

我在哪里可以查看在哪里/为什么有多个线程正在启​​动?另外,自上一步消息以来,我可以做些什么来改变流程?我已经研究了几个星期,但没有解决方案。

提前感谢您的帮助!

【问题讨论】:

  • 您使用的是 TPL 吗?您是否正在异步调用某些方法?您是否有任何由于某些 SVC 调用而执行的回调?
  • 线程是否可能来自客户端,例如浏览器对您的操作进行多次异步调用?
  • @JustinHarvey 就是这样。
  • @DHN 不,我没有使用 TPL 或任何异步方法。我认为我看到的多个线程只是来自浏览器。我实际上有多个问题正在发生。我解决了最重要的问题,所以我会发布解决方案并将其标记为已回答。

标签: c# multithreading asp.net-mvc-3 entity-framework visual-studio-debugging


【解决方案1】:

所以我想出了问题所在。两次将事物保存到数据库的问题是由于在页面上两次使用不显眼的 ajax(一次在我的布局页面中,一次在单个页面上)。

看到多个线程的问题似乎是浏览器的问题,因为我没有在我的应用程序中执行任何类型的线程。虽然小图标和方法的后退很烦人(我想在某个时候解决它),但它实际上并没有改变应用程序的行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多