Tag: C#的

Visual Studio:ContextSwitchDeadlock

我一直在收到一个我无法解决的错误消息。 它来自Visual Studio或debugging器。 我不确定最终的错误条件是在VS,debugging器,我的程序还是数据库中。 这是一个Windows应用程序。 不是一个Web应用程序。 来自VS的第一条消息是一个popup框:“任何调用堆栈帧都不加载符号,源代码不能显示”。 当点击它时,我得到:“ 检测到ContextSwitchDeadlock ”,以及下面转载的长信息。 该错误出现在扫描DataTable的循环中。 对于每一行,它使用表中的一个键(HIC#)作为SqlCommand的参数。 该命令用于创build返回一行的SqlDataReader。 数据进行比较。 如果检测到错误,则将行添加到第二个DataTable。 该错误似乎与程序运行多长时间(即60秒后)有关,而不是发现多less错误。 我不认为这是一个记忆问题。 循环内没有声明variables。 唯一创build的对象是SqlDataReaders,它们在Using结构中。 添加System.GC.Collect()没有效果。 db是同一台笔记本电脑上的SqlServer站点。 表格上没有花哨的小玩意或小玩意儿。 我不知道这个过程中的任何事情,与我以前做过的几十次大不相同。 我以前看过错误,但从来没有一致的基础。 任何想法,任何人? 完全错误文本: CLR已经无法从COM上下文0x1a0b88转换到COM上下文0x1a0cf8达60秒。 拥有目的地上下文/公寓的线程很可能是在不抽取Windows消息的情况下进行非抽取等待或处理非常长的运行操作。 这种情况通常会对性能产生负面影响,甚至可能导致应用程序无响应或内存使用量不断累积。 为了避免这个问题,所有的单线程单元(STA)线程应该使用抽取等待原语(比如CoWaitForMultipleHandles),并在长时间运行的操作中定期抽取消息。

防止在api中序列化属性

我正在使用mvc 4 web api和asp.net webforms 4.0来构build其他api。 这工作很好: [HttpGet] public HttpResponseMessage Me(string hash) { HttpResponseMessage httpResponseMessage; List<Something> somethings = … httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK, new { result = true, somethings = somethings }); return httpResponseMessage; } 现在我需要阻止一些属性被序列化。 我知道我可以在列表上使用一些linq,只获得我需要的属性,通常这是一个很好的方法,但在目前的情况下, something对象太复杂了,我需要不同的属性在不同的方法,所以在运行时标记每个属性将会更容易被忽略。 有没有办法做到这一点?

推迟执行和急切的评估

你可以给我一个例子,用C#进行急切的评估吗? 我从MSDN读取,推迟执行LINQ可以执行懒惰或渴望评估。 我可以在互联网上find延迟执行与懒惰评估的例子,但我找不到任何示例延迟执行与急切的评价。 而且,延期执行与懒惰评估有什么不同呢? 在我看来,两人看起来都一样。 你能提供一个例子吗?

使用entity framework的最有效的自引用树的方法

所以我有一个基本上是一个SQL表 ID, ParentID, MenuName, [Lineage, Depth] 最后两列是自动计算的,以帮助search,所以我们现在可以忽略它们。 我正在创build一个包含多个类别的下拉菜单系统。 不幸的是,我不认为自我引用表超过1级深。 所以我剩下几个选项 1)创build查询,按深度sorting,然后在C#中创build一个自定义类,一次填充一个深度。 2)find一些方法来急切地加载EF中的数据,我不认为这是可能的无限的水平,只有一个固定的金额。 3)我还没有确定的其他方式。 任何投入都会受到欢迎!

迭代DFS与recursionDFS和不同的元素顺序

我写了一个recursion的DFSalgorithm来遍历图: void Graph<E, N>::DFS(Node n) { std::cout << ReadNode(n) << " "; MarkVisited(n); NodeList adjnodes = Adjacent(n); NodeList::position pos = adjnodes.FirstPosition(); while(!adjnodes.End(pos)) { Node adj = adjnodes.ReadList(pos); if(!IsMarked(adj)) DFS(adj); pos = adjnodes.NextPosition(pos); } } 然后我用堆栈写了一个迭代的DFSalgorithm: template <typename E, typename N> void Graph<E, N>::IterativeDFS(Node n) { Stack<Node> stack; stack.Push(n); while(!stack.IsEmpty()) { Node u = stack.Read(); stack.Pop(); […]

从C / C ++调用python方法,并提取其返回值

我想调用一个自定义的函数,它是从C的python模块中定义的。我有一些初步的代码来做到这一点,但它只是输出到标准输出。 mytest.py import math def myabs(x): return math.fabs(x) TEST.CPP #include <Python.h> int main() { Py_Initialize(); PyRun_SimpleString("import sys; sys.path.append('.')"); PyRun_SimpleString("import mytest;"); PyRun_SimpleString("print mytest.myabs(2.0)"); Py_Finalize(); return 0; } 我怎样才能提取返回值到一个C双,并在C中使用它?

我怎样才能写出快速的彩色输出到控制台?

我想知道是否有另一种( 更快 )的方式使用C#.net输出文本到控制台应用程序窗口,而不是使用简单的Write , BackgroundColor和ForegroundColor方法和属性? 我了解到,每个单元格都有一个背景颜色和一个前景色,我想caching/缓冲/写比使用上述方法更快。 也许有一些使用Out缓冲区的帮助,但我不知道如何将颜色编码到stream中,如果这是颜色数据所在的位置。 这是一个基于文本的逆向游戏,我想实现在哪里使用标准颜色和ASCII字符来布局游戏。 请帮忙 :) 更新: 输出和缓冲区可能不是我所需要的。 似乎有一个屏幕缓冲区拥有的控制台。 我不知道如何访问它,也许我只是运气不好,除非我导入一些dll。

指向引用的指针和引用指针之间的区别

指向引用的指针,指向C ++指针的指针和指针有什么区别? 在哪里应该比另一个更受欢迎?

具体类和抽象类有什么区别?

我正在学习C ++,但是我对抽象类和具体类感到困惑。 一些真实世界的例子将不胜感激。

为什么使用hex?

嘿! 我在http://www.gnu.org/software/m68hc11/examples/primes_8c-source.html查看这段代码 我注意到,在某些情况下,他们使用hex数字,如第134行: for (j = 1; val && j <= 0x80; j <<= 1, q++) 现在他们为什么要使用0x80? 我不是hex,但我发现了一个十进制的在线hex,它给了我128个0x80。 在行134之前,在行114上他们有这样的: small_n = (n & 0xffff0000) == 0; hex到十进制给了我4294901760那个hex数字。 所以在这一行中,他们做了一点AND和比较结果0? 为什么不使用这个号码? 任何人都可以请解释,请举例说明其他情况。 我也看到了大量的代码,只是hex数字,从来没有真正理解为什么:(