My situation is:

from main thread i start thread A. 
In main thread there some while(true) which run a lot of time. Inside of while is time consumption operations:

```
    static void Main(string[] args)
    {
        new Thread(Go).Start();

        while (true)
        {
            Thread.Sleep(1000);
        }
    }

    private static void Go()
    {
    }

```

I wish generate exception in main thread if something go wrong in thread A

I read some articles, for example this one: [catch exception that is thrown in different thread](https://stackoverflow.com/questions/5983779/catch-exception-that-is-thrown-in-different-thread)

and the only answer is: using shared variable ([one of answers](https://stackoverflow.com/a/5983812/328829))

So, solution:

```
    static void Main(string[] args)
    {
        new Thread(Go).Start();

        while (true)
        {
            Thread.Sleep(1000);

            if (_bad)
            {
                throw new Exception();
            }
        }
    }

    private static void Go()
    {
        Thread.Sleep(4000);
        _bad = true;
    }

```

is unacceptable, because i wish get exception ASAP. Not wait for loop cycling. For example, if i do cook cookies in while loop, i do not want wait for next cycle when i heat out: when heater is broken i wish in same moment generate exception in main thread.

Now, i can not pass delegates to thread: if i call delegate from thread A, is can not cut while loop, because it other thread. Same thing about events.

How can i handle this problem?

Thanks