C#遇到死亡线程上的事件处理程序

时间:2017-04-07 13:53:09

标签: c# .net multithreading event-handling rapi

首先,我的Main是STAThread,我无法在不遇到其余代码问题的情况下更改此内容。

所以,我目前正在使用Rapi2来拉动和推送我的Pda和计算机之间的文件。现在,由于存在相当多的数字运算,我想在一个单独的线程上执行此操作。我首先要做的是创建一个 RemoteDeviceManager ,然后在设备连接时创建一个事件处理程序。

public void Initialize()
    {
        _deviceManager = new RemoteDeviceManager();
        _deviceManager.DeviceConnected += DeviceConnected;
    }

正如您可以看到我的设备连接时,触发 DeviceConnected 。 这是我最终拉动和推送数据库并完成一些工作的类。

 private void DeviceConnected(object sender, RemoteDeviceConnectEventArgs e)
        {
           if (e.Device == null) return;
           ... (unimportant code)
        }

现在问题是我想在新线程中运行 DeviceConnected 中的代码,但我无法访问新线程中的 e ,因为它是在该线程之外初始化 enter image description here

所以现在我试过的是在调用Initialize之前创建一个新线程。

public Watcher()
    {
        _dataThread = new Thread(Initialize);
        _dataThread.IsBackground = true;
        _dataThread.Name = "Data Thread";
        _dataThread.SetApartmentState(ApartmentState.MTA);
        _dataThread.Start();
    }

但线程死了,因此永远不会触发我的事件处理程序。 我尝试了许多不同的方法使它工作或保持我的线程活着,但没有任何成功。我希望有人能给我一些提示。

0 个答案:

没有答案