Hallo zusammen,
ich bin gerade dabei ein kleines Bildbearbeitungsprogramm zu entwickeln, welches sich durch AddIns erweitern lassen soll. Hier sollen den AddIns nacheinander das entsprechende BitmapImage übergeben werden, welche dieses dann bearbeitet können. (Stapelprozess)
Ich benutze System.AddIn. Das Problem: Ich kann das BitmapImage leider nicht übergeben, dass dieses nicht serialisierbar ist. (Es wird ein Fehler geworfen)
Wegen der Performance wäre es sehr schlecht, wenn jedes AddIn das Bild öffnen, bearbeiten und wieder speichern müsste.
Gibt es irgendwie eine Möglichkeit, das BitmapImage zu übergeben?
Velen Dank für eure Hilfe.
Grüße
Dennis
Evtl. kannst du das für deinen Fall umschreiben:
Walkthrough: Passing Collections Between Hosts and Add-Ins
Was auch gehen würde, hängt natürlich stark von der Größe des Bildes ab, das ganze als MemoryStream zu übertragen.
MemoryStream ist nur der Ursprung des Bildes. Das Bild liegt dann quasi auch zweimal im Speicher (einmal MemoryStream und einem Bild-Instanz)
Was du allerdings machen kannst, das Bild manuell mittels WinAPI öffnen und jeder AppDomain das Handle mitteilen und davon dann eine Bitmap-Instanz oder in deinem Fall BitmapImage zu holen. Solltest dir aber ganz genau überlegen, an welcher Stelle du das Handle wieder zerstörst.
Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...
Schon mal über MEF nachgedacht?
Das ist eine erneuerund der System.Addin .
In meinem Programm selber lade ich über Reflection eine Klasse.
An diese kann ich alles Übergeben.
Für Net-Remoting hab ich ein Bild Serialisieren müssen.
Ich wandel das Bild in eine Byte-Array um. Dieser ist dann Serialisier bar.
Das Funktioniert genauso wie man ein Bild in einem Blob in einer SQL DB speichert.
MfG
Björn
Das Leben ist schön!
Hallo zusammen,
vielen Dank für eure Antworten.
MEF kannte ich bisher noch nicht. Klingt sehr interessant und vielversprechend, werde mir das mal genauer anschauen. Danke für den Tipp.
Grüße
Dennis