2012-05-13 10 views
0

Windows 8のサウンドレコーダーアプリで作業していて、IRandomAccessStreamをMediaElement.SetSourceに渡すと、アプリケーションがクラッシュし、Visual Studioに表示される例外がスローされないことに気付きました。この問題をどのようにデバッグする必要がありますか?それを引き起こす原因は何ですか?それを修正MediaElement.SetSourceがアプリケーションをクラッシュする

void mediaFiles_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if (e.AddedItems.Count == 1) 
    { 
     string fname = e.AddedItems[0] as string; 
     Stream fstream = GlobalVariables.encryptedFS.OpenFile(fname); 
     MediaElement elem = new MediaElement(); 
     mainGrid.Children.Add(elem); 
     elem.AutoPlay = true; 
     elem.SetSource(new WinRTStream(fstream, true), "audio/x-ms-wma"); 
    } 
} 

答えて

0

:ここ

は、クラッシュを引き起こしているコードです。私が実装したIAsyncOperationWithProgressのバグであることが判明しました。私はこれを受け入れるために2日間待たなければならない

class ReadOperation : IAsyncOperationWithProgress<IBuffer, uint> 
{ 
    Stream _underlyingstream; 
    IAsyncAction _task; 
    IBuffer val; 
    byte[] _buffer; 
    int bytesread; 

    public ReadOperation(Stream str, IBuffer buffer, uint cnt) 
    { 
     uint count = cnt; 
     _underlyingstream = str; 

     if (_underlyingstream.Length - _underlyingstream.Position < count) 
     { 

      _buffer = new byte[_underlyingstream.Length - _underlyingstream.Position]; 
      count = (uint)_buffer.Length; 
     } 

     _buffer = new byte[count]; 
     val = buffer; 

     _task = Task.Run(async delegate() 
     { 
      while (bytesread < count) 
      { 
       int cout = await str.ReadAsync(_buffer, bytesread, (int)count); 
       if (cout == 0) 
       { 
        break; 
       } 
       bytesread += cout; 
      } 
     }).AsAsyncAction(); 
    } 
} 
+0

:同様の困難に直面してそれらのため
は、ここでそれを修正したコードです。 – IDWMaster

+0

このバグは残っていますが、今すぐ回答を受け入れることができるかどうかわかりません。 –

関連する問題