Вы можете использовать WaitHandle
производный класс для связи между основными и дочерними потоками:
class Program
{
static void Main(string[] args)
{
ManualResetEvent handle = new ManualResetEvent(false);
Thread thread = new Thread(o =>
{
WorkBeforeEvent();
handle.Set();
WorkAfterEvent();
Console.WriteLine("Child Thread finished");
});
thread.Start();
Console.WriteLine("Main Thread waiting for event from child");
handle.WaitOne();
Console.WriteLine("Main Thread notified of event from child");
Console.ReadLine();
}
public static void WorkBeforeEvent()
{
Thread.Sleep(1000);
Console.WriteLine("Before Event");
}
public static void WorkAfterEvent()
{
Thread.Sleep(1000);
Console.WriteLine("After Event");
}
}
Может быть, вы могли бы использовать [Event] (http://msdn.microsoft.com/en-us/library /aa645739%28v=vs.71%29.aspx)? (Без дополнительного контекста вы вряд ли получите какие-либо полезные ответы, вероятно, вам нужно будет использовать что-то вроде [SynchronoizationContext] (http://msdn.microsoft.com/en-us/library/system.threading.synchronizationcontext.aspx), но не показывая, что вы пытаетесь выполнить, я не могу быть более конкретным, чем это) –