Я не верю, что такая платформа существует сама по себе
Ничто не мешает вам сказать, что вы берете .Net и создаете все новые элементы управления, которые являются поточно-ориентированными и могут работать подобным образом (или, может быть, просто подмножество того, что вам нужно), что не должно быть слишком большой работой (хотя, безусловно, не маленькая работа), потому что вы можете просто извлечь из базовых элементов управления и переопределить любые небезопасные методы или свойства.
Реальный вопрос - почему? Это определенно будет медленнее из-за всей блокировки. Скажем, в одном потоке, который что-то делает с пользовательским интерфейсом, он должен заблокировать окно, в котором он работает, иначе его можно изменить, не зная об этом другого потока. Таким образом, со всей блокировкой вы будете тратить большую часть своего времени рисования и такого ожидания на блокировки и (дорогие) переключения контекста из потоков. Возможно, вы можете сделать это асинхронным, но это просто не кажется безопасным (и, вероятно, нет), потому что элементы управления, которые вы предположительно только что создали, могут существовать или не существовать и будут примерно как
Panel p=new Panel();
Button b=new Button();
WaitForControlsCreated(); //waits until the current control queue is cleared
p.Controls.Add(b);
что, вероятно, так же медленно ..
Итак, настоящий вопрос здесь, почему? Единственный «хороший» способ сделать это - просто абстрагировать invoke
, чтобы можно было добавить элементы управления из потока, не являющегося пользовательским интерфейсом.
Я думаю, вы неправильно понимаете, как на самом деле работают потоки и что нужно для того, чтобы реально сделать поток объектов безопасным