Multithreading 调试时是否使用Sharepoint Web部件多线程?

Multithreading 调试时是否使用Sharepoint Web部件多线程?,multithreading,visual-studio-2010,sharepoint,sharepoint-2010,web-parts,Multithreading,Visual Studio 2010,Sharepoint,Sharepoint 2010,Web Parts,我开发了一个Web部件,它呈现出一种奇怪的行为。当我加载安装的页面时,它有时工作正常,有时崩溃,但我找不到任何模式(对我来说似乎是随机的) 当我调试它时,我看到它有两个执行线程。(debug的游标总是在分离线程中的每个函数上传递两次)。怎么可能呢 我希望只有一个线程,我还怀疑这可能是随机崩溃的根源。知道从哪里开始发现这个错误吗 编辑: 在调试过程中添加了两个屏幕截图 这就是线程和共享变量的问题,如果不同步,就永远不知道什么时候会崩溃。首先,您必须找到为什么有更多线程访问您的代码,如果您无法“删

我开发了一个Web部件,它呈现出一种奇怪的行为。当我加载安装的页面时,它有时工作正常,有时崩溃,但我找不到任何模式(对我来说似乎是随机的)

当我调试它时,我看到它有两个执行线程。(debug的游标总是在分离线程中的每个函数上传递两次)。怎么可能呢

我希望只有一个线程,我还怀疑这可能是随机崩溃的根源。知道从哪里开始发现这个错误吗

编辑:

在调试过程中添加了两个屏幕截图


这就是线程和共享变量的问题,如果不同步,就永远不知道什么时候会崩溃。首先,您必须找到为什么有更多线程访问您的代码,如果您无法“删除”该行为,则必须使用锁或其他同步机制同步对对象中共享的所有变量的访问。(注意,这样做不会造成死锁)


这里的重点是。如果无法使代码在单个线程中运行,则必须同步对对象中变量的访问,以便不会崩溃。

Debug cursor遍历函数两次并不意味着有两个执行线程。你能再解释一下你所说的两个执行线程是什么意思吗?您是否在同一页面上加载Web部件两次?您是否将事件处理程序连接了两次?我添加了两个调试屏幕截图,显示了两个线程(我认为有)。该Web部件在一个页面中添加一次(我从零开始创建了一个新的干净页面,并在添加了web部件之后创建了一个新的干净页面。还有什么可以呢?我指的是web部件中的所有用户控件。@Gaotter:它们都不是共享的。这些都是实例成员。因此,如果同一个实例被多个线程使用,那么调用该实例的线程不会共享它们吗?谢谢您的帮助,但是我想找到的是为什么会出现多个线程。这是由Sharepoint2010?对于Visual Studio?Web部件的代码?Magic?引起的:P@Gaotter:同一实例永远不会被多个线程使用,除非他自己创建线程。否则,每个请求一个线程,每个请求一个页面实例,很可能是一个ins每个网页的web部件数量。。。