2011-10-03 5 views
0

aiはSilverlightイメージをアップロードしています。コードは正常に実行されていますが、パフォーマンスの低いマシン(Firefox、Chrome)では次のようなエラーが表示されます。 、サイズ変更メソッドは、CPUのコストと原因の問題があります。パフォーマンスの低いマシンでブラウザエラーが発生する

私がする必要がある今、このシンクタンクの:

  • は、ブラウザの「プラグインのタイムアウトをチェックし、」これを設定するための一つの方法がありますか?
  • OpenFileDialog assyncでファイルをロードする方法はありますか?

    private void btnSelectFiles_Click(object sender, RoutedEventArgs e) 
    { 
    
        files = new List<File>(); 
    
        OpenFileDialog dlg = new OpenFileDialog(); 
        dlg.Multiselect = Parameters.multiselect; 
        dlg.Filter = Parameters.filter; 
    
        if (dlg.ShowDialog() == true) 
        { 
         JavaScriptHelper.Invoke("SilverUploaderDebug", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + " - Abrindo arquivos"); 
    
         foreach (var file in dlg.Files) 
         { 
          try 
          { 
    
           var f = new File(); 
           JavaScriptHelper.Invoke("SilverUploaderDebug", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + " - Abrindo " + file.Name); 
    
           JavaScriptHelper.Invoke("SilverUploaderDebug", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + " - Redimensionando " + file.Name + "(grande)"); 
           var stream1 = file.OpenRead(); 
           f.data1 = ImageHelper.Resize(stream1, Parameters.img_width, Parameters.img_height, 90, f); 
           JavaScriptHelper.Invoke("SilverUploaderDebug", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + " - OK"); 
    
           JavaScriptHelper.Invoke("SilverUploaderDebug", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + " - Redimensionando " + file.Name + "(pequeno)"); 
           var stream2 = file.OpenRead(); 
           f.data2 = ImageHelper.Resize(stream2, Parameters.img_thumb_width, Parameters.img_thumb_height, 90, f); 
           JavaScriptHelper.Invoke("SilverUploaderDebug", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + " - OK");       
    
           f.name = file.Name; 
           f.extension = file.Extension; 
           files.Add(f); 
           JavaScriptHelper.Invoke("SilverUploaderFileLoaded",JsonHelper.SerializeToJsonString(f)); 
          } 
          catch(Exception ex) 
          { 
           JavaScriptHelper.Invoke("SilverUploaderException", ex.Message); 
          } 
         } 
    
         if (Parameters.auto_upload) 
          upload(); 
        } 
    } 
    

答えて

0

のSilverlightプラグインが「応答なし」される理由は、UIスレッドで長時間実行の操作を実行しているということです。画像ファイルの実際の読み込み(file.OpenRead())とそれらの操作をBackgroundWorkerに移動してみませんか?私はあなたのuploadメソッドが何をしているのか分かりませんが、うまくいけばそれはいいですし、非同期ですが、それはあまりにも些細な時間を取っているかどうかを考えたいかもしれません。

ユーザーエクスペリエンスを向上させたい場合は、バックグラウンドスレッドが絡み合っている間にUIで「作業中」の指示を追加することができます。

関連する問題