1

首先,我的 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,因为它是在该线程之外初始化的 在此处输入图像描述

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

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

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

4

0 回答 0