2011-10-03 2 views
0

ai 코드가 실행 중이지만 브라우저 (Firefox, Chrome)에서 다음과 같은 오류가 발생합니다. 'silverlight'플러그인이 응답하지 않습니다! , 크기 조정 방법은 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

실버 라이트 플러그인 "응답하지"되는 이유는 UI 스레드에서 장기 실행 작업을 실행하는 것입니다. 이미지 파일 (file.OpenRead())의 실제 읽기를 이동하고 해당 파일을 조작하면 BackgroundWorker에 표시되지 않는 이유는 무엇입니까? 나는 당신의 upload 방법이하는 일을 잘 모르지만, 그것은 좋고 비동기 적입니다. 그러나 당신은 그것이 사소한 시간을 갖는지 아닌지 생각하고 싶을 것입니다.

사용자 경험을 향상 시키려면 백그라운드 스레드가 흔들리는 동안 UI에 "진행중인 작업 진행 중"표시를 추가 할 수 있습니다.

관련 문제