Как записать мою собственную обертку в C#?

Вы не должны изменять (понимать и создавать) графический интерфейс из другого потока, идея состоит в том, чтобы посылать информацию о вторичном потоке через сигналы, чтобы мы могли сделать ServerManagement наследоваться от QObject, чтобы он мог создавать сигналы и в общая область между объектом ServerManagement и MainWindow для установления соединения:

class MainWindow(QWidget):
    # ...
    def addChatTab(self, nick, target, parent):
        tab = ChatTab(target)
        tab.setParent(parent)  #where I get the eror
        self.chatTabWidget.addTab(tab, nick)
        self.chatTabs[nick] = tab

    def foo_function(self, another_args)
       # ... foo function is the method where you create the Server Management object
       self.management = ServerManagement()
       self.management.targetChanged.connect(self.update_gui)
       #
    @pyqtSlot(str)
    def update_gui(self, targetTab):
        if targetTab in self.chatTabs.keys():   #if tab is already there
            self.getChatTab(targetTab).write(message)
        else:
            self.addChatTab(targetTab, sender, self)     #create and add it to QTabWidget
            self.getChatTab(targetTab).write(message)

class ServerManagement(QObject):
    targetChanged = pyqtSignal(str)
    def __init__(self, others_arguments):
        super(ServerManagement, self).__init__()
        # ...

    def clientLoop(self): #runs in a different thread
        # ...
        if sender == settingsManager.getUserNick():
            targetTab = receiver
        else:
            targetTab = sender
        self.targetChanged.emit(targetTab)
5
задан Skuta 14 April 2009 в 21:58
поделиться

3 ответа

Хорошее начало можно получить здесь:

Вызов неуправляемого кода. Часть 1 - Простой DLLImport

7
ответ дан 13 December 2019 в 19:36
поделиться

Если вы делаете обертывание очень просто, вы можете уйти с помощью P / Invoke . Если вам действительно нужны управляемые объекты, ваше простейшее решение - написать оболочку на C ++ / CLI (ранее Managed C ++), поскольку это обеспечивает полный набор функций для управляемого / неуправляемого взаимодействия.

3
ответ дан 13 December 2019 в 19:36
поделиться

вот как я это делаю Взаимодействие . В нем показано, как выполнять простые случаи (от BOOL до bool), а также немного более сложные случаи (передача структуры с указателями в управляемую память). Удачи.

1
ответ дан 13 December 2019 в 19:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: