C# - Exception when threading - propagation between threads?
===

**If I have the following situation:**

 1. Execute() creates a new thread and executes function GetSession() in it.
 2. Execute() executes GetSession() again in it's own thread.
 3. Execute() joins the thread from (1).


----------


**My question is:**

What happens if GetSession() throws an exception from the thread spawned in (1) while the thread Execute() is running in is currently running GetSession() itself?

Does the exception re-thrown from the extra thread propagate up to Execute() and cause it to go to its handler *even though it's from a different thread?*


----------


**Here's some sample code to demonstrate the issue:**

I just made this up in the window here (it's a mock-up), so appologies for syntax errors.

    public void Execute()
    {
        //Some logon data for two servers.
        string server1 = "x", server2 = "y", logon = "logon", password = "password";

        //Varialbes to store sessions in.
        MySession session1, session2;

        try
        {
            //Start first session request in new thread.
            Thread thread = new Thread(() =>
                session1 = GetSession(server1, logon, password));
            thread.Start();

            //Start second request in current thread, wait for first to complete.
            session2 = GetSession(server2, logon, password));
            thread.Join();
        }
        catch(Exception ex)
        {
            //Will this get hit if thread1 throws an exception?
            MessageBox.Show(ex.ToString());
            return;
        }
    }

    private MySession GetSession(string server, string logon, string password)
    {
        try
        {
            return new MySession(server, logon, password);
        }
        catch(Exception Ex)
        {
            throw(Ex);
        }
    }
     