Хорошая идея. Но вызывать код в RunUO из другого потока небезопасно. Например
Код
public static void BroadcastMessage(AccessLevel ac, int hue, string message)
{
foreach (NetState state in NetState.Instances)
{
Mobile m = state.Mobile;
if (m != null && m.AccessLevel >= ac)
m.SendMessage(hue, message);
}
}
если в момент нахождения в цикле foreach произойдет отключение/подключение какого-то клиента и содержимое Instance изменится, то это приведет к ошибке и падению сервера.
Правильнее было бы организовать очередь сообщений и таймер. При вводе в консоли команда просто добавляется в очередь. Таймер, выполняемый в основном потоке, читает команды из очереди и выполняет их. Работа с очередью должна быть организована потокобезопасно: на локах, либо с помощью какого-то безопасного списка.