BackgroundWorker如何与端口配合使用

时间:2014-03-10 13:24:42

标签: c# wpf backgroundworker

我想问一下BackgroundWorker的工作原理。我有两个任务:

  • 创建收据并使用财务打印机打印
  • 将收据保存到数据库

出于某种原因,似乎它有时不起作用且BackgroundWorker无法完成(或无法关闭财务提供程序端口)。

代码:

BackgroundWorker bw2 = new BackgroundWorker();
bw2.DoWork += (sender, e) =>
{
    bool result = printReceipt.print(parameters);

    using(SqlConnection conn = new SqlConnection(myConnString)
    {
        conn.Open();
        using (SqlCommand cmd = new SqlCommand("DECLARE @token uniqueidentifier; " +
                                                                   "EXEC usp_AsyncExecInvoke @procedureName = N'CreateDocument' " (...)

        cmd.Parameters.AddWithValue("printed", result == true ? 1 : 0);
        (...)
    }
}

在printRceipt.print中有一个方法可以打开端口,打印收据并关闭端口。正如我所说,出于某种原因,有时(也许当程序花了太长时间?)它没有完成这些任务。最终端口进入“睡眠”状态(或类似的东西),我需要重新启动应用程序。

最好的方法是什么?也许我应该使用两个BackgroundWorkers(第一个打印,第二个保存到DB - 但是如何捕获我的布尔结果值呢?)

感谢您的帮助!

0 个答案:

没有答案