powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Дочерние окна со своим потоком внутри главного
13 сообщений из 13, страница 1 из 1
Дочерние окна со своим потоком внутри главного
    #39114167
constant_ural
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно ли реализовать приложение следующим образом. Есть главное окно. Внутри него имеются другие окна (или контролы),
жестко прикрепленые ("докируемые") друг с другом. Важно, что эти дочерние окна запущенны каждый в своем потоке,
и соответственно со своим диспетчером, т.е обработка данных в окнах происходит параллельно.
Идеально, чтобы это все было полностью на WPF. Ну или хотябы сами окна (контролы) на WPF.
Ну если и так невозможно, то скажите как по другому.
Я знаю по-отдельности: 1)Как запустить WPF окно в собственном потоке. 2) Как поместить в грид WPF содержимое другого
окна. НО. Вместе это не работает

Просьба написать хотя бы возможно или нет и, если да, то как.
...
Рейтинг: 0 / 0
Дочерние окна со своим потоком внутри главного
    #39114204
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
constant_ural, это невозможно. Окна могут работать в отджельных потоках, но разделить содержимое окна по разныи потокам нельзя. Это ограничение Windows.

constant_uralНу если и так невозможно, то скажите как по другому.
Запускай обработку данных в отдельных потоках.
...
Рейтинг: 0 / 0
Дочерние окна со своим потоком внутри главного
    #39114217
constant_ural
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторно разделить содержимое окна по разныи потокам нельзя.
А если как-то их сгруппировать или "склеить" вместе ? Пусть это будут физически разные окна, но выглядеть как одно составное окно.
Вот например в Visual Studio, там что тоже в одном окне все работает (те части которые dockable и склеены между собой) ?

авторЗапускай обработку данных в отдельных потоках.
Это и так делается, но в моей задаче имеет место большая частота изменения данных, и то с какой скоростью работают эти Invoke/BeginInvoke, а также с какой скоростью выводятся данные меня не устраивает. Опять-таки хотелось бы разделить некоторые визуальные объекты вывода данных.
...
Рейтинг: 0 / 0
Дочерние окна со своим потоком внутри главного
    #39114261
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazile,

есть ограничения на то, что поток интерфейса должен быть Single-Threaded Apartment, но это не значит, что их не может быть 2а

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
    public partial class App : Application
    {
        private object _locker = new object();
        private void App_OnStartup(object sender, StartupEventArgs e)
        {
            Thread.CurrentThread.Name = "MainThread1";


            lock (_locker)
            {
                var a = new MainWindow();
                a.Show();
            }

            
            var thread2 = new Thread(OnThreadStart);
            thread2.Name = "AnotherThread";
            thread2.TrySetApartmentState(ApartmentState.STA);
            thread2.Start();

        }

        private void OnThreadStart()
        {
            lock (_locker)
            {
                var a = new MainWindow();
                a.ShowDialog();
            }
        }
    }



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            ThreadName.Text = Thread.CurrentThread.Name;
        }
    }



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<Window x:Class="WpfApplication46.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <TextBlock x:Name="ThreadName" HorizontalAlignment="Center" VerticalAlignment="Center"/>
    </Grid>
</Window>



Вот так у меня запускают 2а окна из разных потоков :)
...
Рейтинг: 0 / 0
Дочерние окна со своим потоком внутри главного
    #39114289
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesесть ограничения на то, что поток интерфейса должен быть Single-Threaded Apartment, но это не значит, что их не может быть 2а
Ты невнимательно прочитал мой ответ.
...
Рейтинг: 0 / 0
Дочерние окна со своим потоком внутри главного
    #39114295
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileconstant_ural, это невозможно. Окна могут работать в отджельных потоках, но разделить содержимое окна по разныи потокам нельзя.
Возможно.
http://blogs.msdn.com/b/dwayneneed/archive/2007/04/26/multithreaded-ui-hostvisual.aspx
...
Рейтинг: 0 / 0
Дочерние окна со своим потоком внутри главного
    #39114306
constant_ural
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,
авторесть ограничения на то, что поток интерфейса должен быть Single-Threaded Apartment, но это не значит, что их не может быть 2а
Да, получается можно создать два окна в приложении, которые будут в разных потоках. Я делал похожие вещи, только вызывал из главного окна втрое которое выполняется в отдельном потоке. Это гуд.
Но как сделать чтобы эти два окна были единым целым. В идеале - одно в другом. Ну или dock их как-то, состыковать. Никто не знает, а ?
...
Рейтинг: 0 / 0
Дочерние окна со своим потоком внутри главного
    #39114309
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны, спасибо за интересную ссылку, только данное решение подходит только когда требуется только отображать данные. Хотя возможно ТСу именно это требуется.
авторIf your scenario doesn’t require interactivity (meaning input), then there is another option that WPF provides: HostVisual.
...
Рейтинг: 0 / 0
Дочерние окна со своим потоком внутри главного
    #39114310
constant_ural
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны,

автор http://blogs.msdn.com/b/dwayneneed/archive/2007/04/26/multithreaded-ui-hostvisual.aspx
Да, спасибо, статью видел.

По началу смутило вот это.
There are some limitations: namely that the UI owned by the worker threads do not receive input events


Т.е. я это понял так, что выводить данные можно, но вот ввод такие элементы получить не могут (или не так ?).
Это меня несколько обескуражило,
так как мне это не совсем подходит. Хотя может быть в какой-то степени идею использовать можно. Или я
...
Рейтинг: 0 / 0
Дочерние окна со своим потоком внутри главного
    #39114332
constant_ural
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так, а если поставить вопрос в другой плоскости.
Можно ли взять два окна и "состыковать" их друг с другом, а-ля dockable.
Т.е. визуально одно целое но физически два разных окна ?
...
Рейтинг: 0 / 0
Дочерние окна со своим потоком внутри главного
    #39114393
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
constant_uralТак, а если поставить вопрос в другой плоскости.
Можно ли взять два окна и "состыковать" их друг с другом, а-ля dockable.
Т.е. визуально одно целое но физически два разных окна ?

состыковывать может быть не окна, а их содержимое?
глянь http://appfx.codeplex.com/
...
Рейтинг: 0 / 0
Дочерние окна со своим потоком внутри главного
    #39114400
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шайтан,

стандартные средства не предоставляют такую возможность, но делается это через DockPanel и окна, достаточно в Snoop! или аналогах изучить структуру дерева VisualStudio и станет понятно как это работает.
Единственное, что меня поражает в VS это отсутствие тормозов при таком обилии говна в этом дереве
...
Рейтинг: 0 / 0
Дочерние окна со своим потоком внутри главного
    #39114451
constant_ural
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторсостыковывать может быть не окна, а их содержимое?
глянь http://appfx.codeplex.com/

Мне же нужно чтобы окна именно каждое в своем потоке выполнялось (см. выше).
С содержимым проблем нету - в грид вставляешь контент и готово, но это будет тот же поток что UI.
Поэтому именно окна.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Дочерние окна со своим потоком внутри главного
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]