代码卡在插入查询上

时间:2012-03-09 22:53:37

标签: c# visual-studio-2010

我正在运行一个Windows窗体基础应用程序,我正在使用httpwebrequest的后台工作者类。并且使用webbrowser控件,两者都将数据保存到Excel工作表。 它运行正常或者运气好,现在我看到代码卡在insert语句上,它只是进入

myCommand.ExecuteScalar();

没有出来。过了一段时间我就看到了:

  

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

卡住的问题是:

try
{

    myCommand.CommandText = "Insert into [outputsheet$] (website,[facebook page],DealTitle,Dealtime,Dealprice,Dealvalue,Dealdiscount,Dealsaving,Linktitle,address,Category,[Type of Deal]) Values('" + 
        webaddress.Replace("'", "''") + "','" + facbookaddress.Replace("'", "''") + "','" + title.Replace("'", "''") + "','" + dealtime.Replace("'", "''") + "','" + 
        amount.Replace("'", "''") + "','" + value.Replace("'", "''") + "','" + discount.Replace("'", "''") + "','" + saving.Replace("'", "''") + "','" + 
        titleweb.Replace("'", "''") + "','" + address.Replace("'", "''") + "','" + categoryName.Replace("'", "''") + "','Now Deals')";
    myCommand.ExecuteScalar();

}
catch (Exception exp)
{

}

请帮助,有什么我需要做的。如何避免它。 谢谢

2 个答案:

答案 0 :(得分:0)

它可能与MDA有关,正如微软论坛上的帖子所示(一些帖子下来,有点必须为它捕鱼): http://social.msdn.microsoft.com/forums/en-US/vsdebug/thread/8e04941e-32e1-4901-b360-4859106a5412

答案 1 :(得分:0)

也许您可以尝试在lock()中封装ExecuteNonQuery,以避免在忙于执行前一个请求时向excel发送请求的可能性?

编辑:example

如果执行插入的代码封装在类中,您可以执行以下操作:

static private object thisLock = new object();

以后:

lock(thisLock)
{
   myCommand.ExecuteNonQuery();
}

我还没有完成很多多线程,所以我可能会偏离标准。