C# Trouble with event handlers on dieing threads

153 views Asked by At

First of all my Main is STAThread and i am not able to change this without facing problems with the rest of my code.

So, I am currently using Rapi2 To pull and push files between my Pda and Computer. Now since there is quite a bit of number crunching i would like to do this on a separate thread. First wat i do is create an RemoteDeviceManager and then make an Event Handler for when a device connects.

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

As you can see when my device connects it triggers DeviceConnected. This is the class that i end up pulling and pushing a database and do some number work.

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

Now the problem here is that i would want to run the code inside DeviceConnected in a new thread but i am unable to access e inside the new thread since it was initialized outside that thread enter image description here

So now wat i tried was make a new thread before calling Initialize.

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

But the thread dies and thus never fires my event handler. I tried many different ways to make it work or keep my thread alive but without any success. I hope someone here is able to give me some hints.

0

There are 0 answers