首先,我的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();
}
但线程死了,因此永远不会触发我的事件处理程序。 我尝试了许多不同的方法使它工作或保持我的线程活着,但没有任何成功。我希望有人能给我一些提示。