Что-то вроде System.Diagnostics.Process.Start для запуска потока - PullRequest
1 голос
/ 27 мая 2010

Я получаю с сервера изображения и видео в потоковом режиме. Теперь я сохраняю это:

 Stream str = client.GetFile(path);
                    using (var outStream = new FileStream(@"c:\myFile.jpg", FileMode.Create))
                    {
                        var buffer = new byte[4096];
                        int count;
                        while ((count = str.Read(buffer, 0, buffer.Length)) > 0)
                        {
                            outStream.Write(buffer, 0, count);
                        }
                    }

Я могу быть jpg, mpg, flv и многими другими типами мультимедиа (прежде чем я получу поток, я знаю, что является расширением этого файла).

Теперь я хочу не сохранить его, а запустить прямо из потока.

Примеры:

Я получаю поток mybirthay.avi и вызываю свой метод RunFile (поток), и я думаю, что этот метод должен работать как System.Diagnostics.Process.Start (путь), поэтому мой поток должен быть открыт программой по умолчанию в моем ТАК например allplayer.

Я получаю поток из myfile.jpg, и он открывается irfanview,

и т.д ...

Возможно ли это ??

Ответы [ 2 ]

2 голосов
/ 27 мая 2010

Если вы не сохраняете поток на диск, вы можете использовать что-то вроде Eldos 'Callback File System: http://www.eldos.com/cbfs/

Или воспользуйтесь виртуальным диском, сохраните там свой поток и перейдите в этот файл.

1 голос
/ 27 мая 2010

Windows создает стену между процессами, поэтому они не могут напрямую обращаться к памяти друг друга, не пройдя через привилегированные отладочные API-функции, такие как ReadProcessMemory. Это то, что поддерживает операционную систему стабильной и безопасной. Но заклинания обрекают на то, чего вы пытаетесь достичь.

Вам нужно будет использовать файл. Это не будет намного медленнее, чем прямой доступ к памяти, кеш файловой системы позаботится об этом.

...