C# BackgroundWorker如何处理端口
我想问一下后台工作人员到底是如何工作的。我有两项任务:C# BackgroundWorker如何处理端口,c#,wpf,backgroundworker,C#,Wpf,Backgroundworker,我想问一下后台工作人员到底是如何工作的。我有两项任务: 创建收据并使用财务打印机打印 将收据保存到数据库中 出于某种原因,它似乎有时不起作用,BackgroundWorker也没有完成(或者无法关闭财政priter端口) 代码: 在printrcept.print中,有一种方法可以打开端口、打印收据并关闭端口。正如我所说的,出于某种原因,有时(可能是因为程序太长了?)它无法完成这些任务。最终端口进入“睡眠”状态(或类似状态),我需要重新启动应用程序 最好的方法是什么?也许我应该使用两个Bac
- 创建收据并使用财务打印机打印
- 将收据保存到数据库中
谢谢你的帮助 @maxmomersteeg可能会使用输入错误-
。请不要关闭端口。SerialPort.Close()的MSDN文章特别警告了这一点。如果DataReceived事件处理程序使用Invoke(),也很容易触发死锁。您的代码片段非常不充分。请格式化您的问题,删除打字错误并格式化代码,使其看起来“有吸引力”。@user13657我们告诉您代码很重要。如果您不愿意提供足够的信息来诊断问题,那么我们无法帮助您。您的问题似乎在打印方法上。如果您不提供代码,我们无法帮助您,对不起。
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);
(...)
}
}