immernoch arbeite ich am gleichem projekt (für manche schon als "Bukkit Manager" bekannt) - dem manager für minecraft (bukkit) servern. da ich die projektmappe meines projekts verkleinern musste (hier der grund), hab ich mehrere funktionen in externe projekte bzw. klassenbibliotheken ausgelagert. somit auch die funktion, die den prozess hostet und den konsolen-text ausgibt. und da ist das problem: anstatt das alles im code-behind des hauptfensters statt findet, muss ich auf die klassenbibliothek (in diesem fall "ConsChat.dll") zugreifen. dazu hab ich in der klassenbibliothek auch entsprechende eventhandler mit eventargs erstellt:
eventargs:
da stehen dann die nötigen werte drin
<SerializableAttribute> _ <ComVisibleAttribute(True)> _ Public Class ConsChatEventArgs Inherits EventArgs Public Property ConsoleLastLine As String 'hier wird noch einiges hinzukommen End Class
konsolen-modul:
"steuert" den prozess-host
Public Class Console Public Event ReceivedOutput As EventHandler(Of ConsChatEventArgs) Public Sub New() AddHandler ProcessHost.ConsoleOutput, AddressOf Server_ReceivedOutput End Sub Private Sub Server_ReceivedOutput() Dim eArgs As New ConsChatEventArgs eArgs.ConsoleLastLine = ReadLastLine() OnOutputReceive(eArgs) End Sub Protected Overridable Sub OnOutputReceive(e As ConsChatEventArgs) RaiseEvent ReceivedOutput(Me, e) End Sub Public Function ReadLastLine() Dim lLine As String = ProcessHost.LastLine Return lLine End Function End Class
hauptfenster:
lässt die letzte zeile in der textbox "ConsoleBox" erscheinen
Class ManagerWindow Public ConsoleModule As New ConsChat.Console Public Sub New() InitializeComponent() AddHandler ConsoleModule.ReceivedOutput, AddressOf cOutput End Sub Private Sub cOutput(sender As Object, e As ConsChatEventArgs) ConsoleBox.Text &= e.ConsoleLastLine End Sub End Class
nun ist aber das problem, dass ich immer folgende meldung bekomme, sobald die "cOutput"-prozedur ausgeführt wird:
Zitat
Eine nicht behandelte Ausnahme des Typs "System.InvalidOperationException" ist in WindowsBase.dll aufgetreten.
Zusätzliche Informationen: Der aufrufende Thread kann nicht auf dieses Objekt zugreifen, da sich das Objekt im Besitz eines anderen Threads befindet.
Zusätzliche Informationen: Der aufrufende Thread kann nicht auf dieses Objekt zugreifen, da sich das Objekt im Besitz eines anderen Threads befindet.