Пример #1
0
 // Methods
 private static IAsyncResult _BeginGetDvdInfo(DvdInfoRequestData dvdInfoRequestData, string dvdId, AsyncCallback callback, object callbackData, bool bUseEnhancedMetadata)
 {
     if (dvdInfoRequestData == null)
     {
         //if (WorkOffline)
         //{
         //    return null;
         //}
         if (string.IsNullOrEmpty(dvdId))
         {
             return null;
         }
         dvdInfoRequestData = new DvdInfoRequestData(dvdId);
         if (!bUseEnhancedMetadata)
         {
             s_currentRequests[dvdId] = dvdInfoRequestData;
         }
         //string strUrl = MetadataURLForDisc(dvdId, bUseEnhancedMetadata);
         string strUrl = MetadataURL(bUseEnhancedMetadata)+dvdId;//.Replace("|","");//string.Format(metMetadataURLForDisc(dvdId, bUseEnhancedMetadata);
         uint cbMaxSize = 0x19000;
         AsyncCallback callback2 = bUseEnhancedMetadata ? new AsyncCallback(DvdInfo.InetStreamCallbackEx) : new AsyncCallback(DvdInfo.InetStreamCallback);
         bool flag = false;
         try
         {
             InetStream.BeginRead(strUrl, callback2, dvdInfoRequestData, cbMaxSize);
         }
         catch (WebException exception)
         {
             flag = true;
             if (dvdInfoRequestData != null)
             {
                 dvdInfoRequestData.Exception = exception;
             }
         }
         catch (InvalidOperationException exception2)
         {
             flag = true;
             if (dvdInfoRequestData != null)
             {
                 dvdInfoRequestData.Exception = exception2;
             }
         }
         if (flag)
         {
             CompleteTheRequest(dvdInfoRequestData, true, true);
         }
     }
     DvdInfoCallback dvdInfoCallback = new DvdInfoCallback(callback, callbackData);
     if (dvdInfoRequestData.IsCompleted)
     {
         return IssueCallback(dvdInfoRequestData, dvdInfoCallback, true);
     }
     if (callback != null)
     {
         dvdInfoRequestData.Callbacks.Add(dvdInfoCallback);
     }
     return new DvdInfoAsyncResult(dvdInfoRequestData, dvdInfoCallback.CallbackData, false);
 }
Пример #2
0
 private static DvdInfoAsyncResult IssueCallback(DvdInfoRequestData dvdInfoRequestData, DvdInfoCallback dvdInfoCallback, bool completedSynchronously)
 {
     DvdInfoAsyncResult ar = new DvdInfoAsyncResult(dvdInfoRequestData, dvdInfoCallback.CallbackData, completedSynchronously);
     if (dvdInfoCallback.Callback != null)
     {
         if (completedSynchronously)
         {
             if (dvdInfoCallback != null)
             {
                 dvdInfoCallback.Callback(ar);
             }
             return ar;
         }
         //TODO: rewire callback
         //Application.DeferredInvoke(dvdInfoCallback.Callback, new object[] { ar });
     }
     return ar;
 }