Python.Net: загрузить второе окно во втором домене приложения, используя Python.Net - PullRequest
0 голосов
/ 27 сентября 2018

Мне интересно, как запустить новый домен приложений и запустить окно WPF в этом домене приложений?

Мой код выглядит примерно так:

import clr 
clr.AddReference(r"wpf\PresentationFramework")
from System.Windows import Application, Window
from System.Threading import Thread, ThreadStart, ApartmentState
from System import AppDomain, AppDomainSetup, CrossAppDomainDelegate


class MyWindow(Window):
    ...

if __name__ == '__main__':
    def start_thread():
        thread1 = Thread(ThreadStart(MyWindow))
        print ("Thread 1 domain:",thread1.GetDomain().FriendlyName)
        thread1.SetApartmentState(ApartmentState.STA)
        thread1.Start()
        thread1.Join()


    ads = AppDomainSetup()
    ads.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory
    ads.ConfigurationFile = \
        AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

    ad2 = AppDomain.CreateDomain("ad2", None, ads)

    cadd = CrossAppDomainDelegate(start_thread)
    ad2.DoCallBack(cadd)

В результате я получил ошибку:

System.Runtime.Serialization.

Полагаю, задача состоит в том, чтобы установить объект cadd как сериализуемый.Но когда я искал решения, я не нашел ничего о том, как это сделать в Python.

Я совершенно новичок в этой области, возможно, я ошибаюсь в самом начале.

Спасибо за вашу помощь заранее!

...