易截截图软件、单文件、免安装、纯绿色、仅160KB

C# C/S程序出错:ContextSwitchDeadlock is detected

今天在VS2005调试一个C# C/S程序,当通过RFC与SAP连接时间过长时,出现此错误,在网上找到解决办法。
VS2008上的一个程序,通过Oracle.DataAccess.dll执行drop user
cascade操作,我在sqlplus执行此操作大约需要一分钟左右时间,当我在VS2008中debug启动此程序时,一直接收到
“ContextSwitchDeadlock is detected”消息,操作无法进行下去。
MSDN的解释一如即往地专业并且令人费解:
“如果在试图进行COM上下文转换期间检测到一个死锁,则将激活ContextSwitchDeadlock托管调试助手 (MDA)。 ”
“原因很可能是单线程单元(STA)线程不发送消息。STA线程或者等待而且不发送消息,或者执行一个长时间的操作而且不允许发送消息队列。”
我没看出这程序跟COM有什么关系。看了半天,只看到“长时间的操作”貌似还沾点边,解决的方法倒是简
单,Debug->Exceptions->Managed Debugging
Assistants->ContextSwitchDeadlock,钩除“Thrown”项的复选框。
BTW,
1)COM,Component Object Model,它实际是一类软件开发方式。而COM组件顾名思义是按这种方式开发出来的软件/模块,看看Project->References->Add References->COM下列出的组件。
2)单线程单元(STA):当你新建一个WindowsForm项目,在入口Main()方法上可以看到标识的属性,STAThread说明应用程
序的 COM 线程模型是单线程单元,一般出现在Main方法前。大意是在与COM互操作时保证对象的线程安全性,内部细节不详。


相关文档:

C/C++编程必备

Windows C 程序设计入门与提高
http://download.chinaitlab.com/program/files/13246.html
单片机C语言入门
http://download.chinaitlab.com/program/files/12907.html
C++ 入门基础教程
http://download.chinaitlab.com/program/files/7617.html
C语言常用算法源代码
http://download.chinaitlab.com/program/files ......

数字表达式求值程序 (c/c++)

一个控制台下的数字表达式求值程序 (c/c++)
源代码见下:
#include <stdio.h>
#include <string>
#include <iostream>
#include <stdlib.h>
#include <vector>
#include <stack>
using namespace std;
//设置运算符优先级的算法
int Priority(const string opera) // 运算符 ......

转]C,C++经典问题,及面试笔试题


1       编程基础
1.1    基本概念
1.         的理解:const char*, char const*, char*const的区别问题几乎是C++面试中每次    都会有的题目。 事实上这个概念谁都有只是三种声明方式非常相似很容易记混。 Bja ......

C语言高级测试:为C程序员准备的0x10个最佳问题

整个测试遵循以下的约定:
u
      
假定在所有的程序中必须的头文件都已经被正确包含。
考虑如下的数据类型:
u
      
char

1
个字节
u
      
int

4
个字节
u
      ......

C和C++之间的不同

(注,本文是翻译的http://www.cprogramming.com/
上的文章 Where C and C++ Differ

C++基于C,也保留了C的大部分特性。但是在源码级上有些地方是与C不兼容的。
C程序员使用C++时的陷阱
从 void* 的隐式分配
不能从 void* 隐式地分配到其他任何类型。例如,下面的代码在C中是非常有效的。
    in ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号