private void UpdateLibraryState()
        {
            this.DisposeLocalFile();
            InboxImageDataProviderObject result = this.Result as InboxImageDataProviderObject;
            string inboxPhotoUrl = MessagingService.Instance.GetInboxPhotoUrl(this._title, this._collectionName);

            result.InLibrary = inboxPhotoUrl != null;
            result.ImagePath = inboxPhotoUrl;
        }
        private void OnRequestComplete(Microsoft.Zune.Service.HttpWebResponse response, object requestArgs)
        {
            RequestArgs requestArgs1            = (RequestArgs)requestArgs;
            string      requestUri              = requestArgs1.m_requestUri;
            InboxImageDataProviderObject result = requestArgs1.m_result;
            int        tcStart    = requestArgs1.m_tcStart;
            Stream     stream     = null;
            FileStream fileStream = null;

            try
            {
                stream = response.StatusCode == HttpStatusCode.OK ? response.GetResponseStream() : throw new HttpWebException(response);
                int tickCount1 = Environment.TickCount;
                this.SetWorkerStatus(DataProviderQueryStatus.ProcessingData);
                int    contentLength = (int)response.ContentLength;
                byte[] buffer        = new byte[40960];
                string tempFileName  = Path.GetTempFileName();
                fileStream = new FileStream(tempFileName, FileMode.Truncate, FileAccess.Write, FileShare.None, 40960, FileOptions.SequentialScan);
                int count;
                for (; contentLength > 0 && (count = stream.Read(buffer, 0, 40960)) > 0; contentLength -= count)
                {
                    fileStream.Write(buffer, 0, count);
                }
                fileStream.Close();
                result.ImagePath = tempFileName;
                Application.DeferredInvoke(new DeferredInvokeHandler(this.DeferredSetResult), new DeferredSetResultArgs(result));
                this.SetWorkerStatus(DataProviderQueryStatus.Complete);
                int tickCount2 = Environment.TickCount;
            }
            catch (Exception ex)
            {
                this.SetWorkerStatus(DataProviderQueryStatus.Error);
            }
            finally
            {
                fileStream?.Close();
                stream?.Close();
            }
        }
 public DeferredSetResultArgs(InboxImageDataProviderObject result) => this.m_result = result;
 public RequestArgs(string requestUri, InboxImageDataProviderObject result, int tcStart)
 {
     this.m_requestUri = requestUri;
     this.m_result     = result;
     this.m_tcStart    = tcStart;
 }