static void Main()
{
//включаем визуальные стили для прилжения, поскольку оно является оконным
Application.EnableVisualStyles();
/*создаём необходимые домены приложений с дружественными именами и
* сохраняем ссылки на них в соответствующие переменные*/
Drawer = AppDomain.CreateDomain("Drawer");
TextWindow = AppDomain.CreateDomain("TextWindow");
/*загружаем сборки с оконными приложениями в соответствующие домены приложений*/
DrawerAsm = Drawer.Load(AssemblyName.GetAssemblyName("TextDrawer.exe"));
TextWindowAsm = Drawer.Load(AssemblyName.GetAssemblyName("TextWindow.exe"));
/*создаём объекты окон на сонове оконных типов данных из загруженных сборок*/
DrawerWindow = Activator.CreateInstance(DrawerAsm.GetType("TextDrawer.Form1")) as Form;
TextWindowWnd = Activator.CreateInstance(
TextWindowAsm.GetType("TextWindow.Form1"),
new object[]
{
DrawerAsm.GetModule("TextDrawer.exe"),
DrawerWindow
}) as Form;
/*запускаем потоки*/
(new Thread(new ThreadStart(RunVisualizer))).Start();
(new Thread(new ThreadStart(RunDrawer))).Start();
/*добавляем обработчик события DomainUnload*/
Drawer.DomainUnload += new EventHandler(Drawer_DomainUnload);
}