在我的应用程序中,我通过红外读取器设置/获取设备中的数据。 当我运行我的应用程序时,我有两种情况: -设备一直在这里,我返回一个对象“ RETOUR” -该设备刚开始在这里,但是有人在我运行功能时断开了它。
在两种情况下,我都希望返回一个类型为“ RETOUR”的对象。
入口点一定是这样的功能: “公共异步任务XXX(动态输入)”
我建立了一个后台工作人员,负责查找设备何时断开连接。 它可以正常工作,但是在调用RunWorkerCompletedEventHandler时,我不知道如何强制我的异步任务返回对象。
在每个“异步任务”功能中启动Backgroundworker的代码:
bw = new BackgroundWorker();
bw.WorkerSupportsCancellation = true;
bw.DoWork += new DoWorkEventHandler(
delegate (object o, DoWorkEventArgs args)
{
// called when AwaitEpdRemoval have response
stack.EpdRemoved += (object sender, ConnectEventArgs e) =>
{
// Set the object i want to return
STATIC_FUNCTION.mon_retour.GestionErreur("154", null);
};
// While AwaitEpdRemoval don't throw EpdRemoved object
while (true && STATIC_FUNCTION.mon_retour.code_retour != "154")
{
try
{
if (bw.CancellationPending) {
args.Cancel = true;
break;
}
// If device still here
stack.AwaitEpdRemoval(discoveredEpd);
}
catch (Exception e)
{
// If the device is still the here the DLL throw error
System.Threading.Thread.Sleep(100);
}
}
});
// when the worker is completed
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(
delegate (object o, RunWorkerCompletedEventArgs args)
{
// for now i close the app, but what i want is return STATIC_FUNCTION.mon_retour
System.Environment.Exit(1);
});
bw.RunWorkerAsync();
现在它关闭所有内容,但是我希望它停止其他代码并返回对象“ STATIC_FUNCTION.mon_retour”
我该怎么做(即使我必须重写所有内容)。