小编Sea*_*ive的帖子

Visual Studio:ContextSwitchDeadlock

我收到了一条无法解决的错误消息.它源自Visual Studio或调试器.我不确定最终的错误条件是在VS,调试器,我的程序还是数据库中.

这是一个Windows应用程序.不是网络应用程序.

来自VS的第一条消息是一个弹出框,说:"没有为任何调用堆栈帧加载符号.源代码无法显示." 当点击它时,我得到:" 检测到ContextSwitchDeadlock ",以及下面再现的长消息.

在向下扫描DataTable的循环中出现错误.对于每一行,它使用表中的键(HIC#)值作为SqlCommand的参数.该命令用于创建返回一行的SqlDataReader.数据进行比较.如果检测到错误,则将行添加到第二个DataTable.

该错误似乎与程序运行所需的时间(即60秒后)有关,而不是发现了多少错误.我不认为这是一个记忆问题.循环中没有声明变量.创建的唯一对象是SqlDataReaders,它们位于Using结构中.添加System.GC.Collect()无效.

db是同一台笔记本电脑上的SqlServer站点.

表格上没有花哨的小玩意儿或小工具.

我不知道这个过程中有什么东西与我以前做过的几十次大不相同.我以前看过这个错误,但从来没有一贯的.

任何想法,任何人?

完整错误文本: CLR无法从COM上下文0x1a0b88转换到COM上下文0x1a0cf8达60秒.拥有目标上下文/公寓的线程很可能是在非抽空等待或处理非常长时间运行的操作而不抽取Windows消息.这种情况通常会对性能产生负面影响,甚至可能导致应用程序变得无响应或内存使用量随时间不断累积.为了避免这个问题,所有单线程单元(STA)线程都应该使用抽取等待原语(例如CoWaitForMultipleHandles)并在长时间运行操作期间定期泵送消息.

c# sql-server visual-studio

154
推荐指数
5
解决办法
11万
查看次数

Sql Server临时表消失

我正在创建一个临时表#ua_temp,它是常规表的子集.我没有收到错误,但是当我在第二步尝试从#ua_temp中选择时,却找不到它.如果删除#,则会创建名为ua_temp的表.

我使用了与其他地方的SELECT INTO一起创建表的完全相同的技术.它运行正常,所以我认为它与数据库设置无关.有谁能看到这个问题?

        // Create temporary table 
        q = new StringBuilder(200);
        q.Append("select policy_no, name, amt_due, due_date, hic, grp, eff_dt, lis_prem, lis_grp, lis_co_pay_lvl, ");
        q.Append("lep_prem, lapsed, dn_code, [filename], created_dt, created_by ");
        q.Append("into #ua_temp from elig_ua_response ");
        q.Append("where [filename] = @fn1 or [filename] = @fn2 ");
        sc = new SqlCommand(q.ToString(), db);
        sc.Parameters.Add(new SqlParameter("@fn1", sFn));
        sc.Parameters.Add(new SqlParameter("@fn2", sFn2));
        int r = sc.ExecuteNonQuery();
        MessageBox.Show(r.ToString() + " rows");

        // Rosters
        q = new StringBuilder(200);
        q.Append("select policy_no,name,amt_due,due_date,hic,grp,eff_dt,");
        q.Append("lis_prem,lis_grp,lis_co_pay_lvl,lep_prem,lapsed,dn_code,[filename] ");
        q.Append("from #ua_temp where (lis_prem > 0.00 or …
Run Code Online (Sandbox Code Playgroud)

c# sql-server

7
推荐指数
3
解决办法
9041
查看次数

Crystal Reports将文本更改为小写

我在Visual Studio中的Crystal Report上有初始大写的文本对象.当我打印报告时,文本全是小写.

原因是什么?

crystal-reports visual-studio

6
推荐指数
1
解决办法
2609
查看次数

GWT Canvas:如何改变线条颜色

由于GWT中的画布绘图遍布地图,让我明确说明我正在使用它:

import com.google.gwt.canvas.client.Canvas;
Run Code Online (Sandbox Code Playgroud)

问题是如果我绘制一条黑线然后变为红色,第一行也会变为红色.

// draw line in black
 context.moveTo(xScale(-0.5), yScale(0.0));
 context.lineTo(xScale(15.0), yScale(0.0));
 context.stroke();

 // change to red
 context.setStrokeStyle(CssColor.make(255,0,0));


 context.moveTo(xScale(0.0), yScale(20.0));
 context.lineTo(xScale(0.0), yScale(-20.0));
 context.stroke();

 // both lines appear in red
Run Code Online (Sandbox Code Playgroud)

更改笔颜色的正确方法是什么?

gwt canvas colors

6
推荐指数
1
解决办法
3957
查看次数

如何避免以优雅的方式创建不需要的对象?

我的问题的根源是C#编译器太聪明了.它可以检测通过该物体可能是不确定的路径,这样的要求,我填满它.在代码中,我看在DataSet中的表,看是否有一个我想要的.如果没有,我会创建一个新的.我知道,dtOut总是被分配一个值,但除非它声明时所分配的值,编译器不开心.这是不优雅的.

如何以更优雅的方式重写它?

             System.Data.DataTable dtOut = new System.Data.DataTable();
            .
            .
            // find table with tablename = grp
            // if none, create new table
            bool bTableFound = false;
            foreach (System.Data.DataTable d1 in dsOut.Tables)
            {
                string d1_name = d1.TableName;
                if (d1_name.Equals(grp))
                {
                    dtOut = d1;
                    bTableFound = true;
                    break;
                }
            }

            if (!bTableFound) dtOut = RptTable(grp);
Run Code Online (Sandbox Code Playgroud)

c#

5
推荐指数
2
解决办法
283
查看次数

Excel Interop:格式化页脚

我正在使用Microsoft.Office.Interop.Excel从C#创建Excel工作表,但我无法按照用户想要的方式获取页脚.

1)如何将页脚文本置于BOLD中?2)如何将页码放在页脚中?(将@"Page @ [Page]"作为文本放入不起作用.)

可能?不可能?

format excel interop footer

4
推荐指数
2
解决办法
1万
查看次数