2009-05-27 6 views
3

Ich habe einen Teil des Codes wie diesesWarum bekomme ich Stream als System.IO.UnmanagedMemoryStream?

 Assembly myAssembly = Assembly.GetExecutingAssembly(); 
     string[] names = myAssembly.GetManifestResourceNames(); 
     foreach (string file in names) 
     { 
      if (file.EndsWith(".dtd")) 
      { 
       // attach to stream to the resource in the manifest 
        dtdStream = myAssembly.GetManifestResourceStream(file); 
        MessageBox.Show(dtdStream.ToString()); 
      }     
     } 

i alle dtd Dateien unter meiner Ressourcen haben folder.Which Typ Eingebettete Ressource hat bauen.
Jetzt, wenn ich den Code debuggen bekomme ich ein Meldungsfeld mit System.IO.UnmanagedMemoryStream

Aber ich möchte eine Managed MemoryStream?
Was ist falsch in meinem Code?
Danke ...

+0

Warum wollen Sie einen verwalteten Speicher-Stream? –

Antwort

8

Ressourcen werden als Teil der Assembly kompiliert (EXE oder DLL), was bedeutet, dass sie in nicht verwalteten Speicher geladen werden, wenn das Betriebssystem den Prozess startet. Aus diesem Grund muss ein von GetManifestResourceStream zurückgegebener Stream unmanaged (vom Typ UnmanagedMemoryStream) sein.

Was ist das Problem überhaupt? Die Schnittstelle von MemoryStream und UnmanagedMemoryStream ist grundsätzlich identisch, und nur die (versteckte) Funktionalität unterscheidet sich, was für Sie keine Bedeutung haben sollte.

+0

Wenn möglich, kann ich den von GetManifestResourceStream zurückgegebenen Stream als verwaltet abrufen? Wenn ja, wie? –

+0

@crazy_itgal: Ja, aber es wäre nicht schön, und würde keine Vorteile bieten, die ich mir vorstellen konnte (und nur Overhead erzeugen). (Für was genau denken Sie, dass es hilft?) Wie auch immer, die grundlegende Methode wäre, den zugehörigen UnmanagedMemoryStream zu lesen und alles in ein MemoryStream-Objekt zu schreiben. – Noldorin

+0

Wenn ich ein Bild aus dem Ressourcen-Stream lesen muss, muss ich UnmanagedMemoryStream verwenden, um BitmapImage zu initialisieren, das nur MemoryStream als Parameter des Konstruktors akzeptiert. – ziyuang

Verwandte Themen