//private ProBYQ CheckSetting() //{ // RadComboBox cb1 = (RadComboBox)cbxBrand.Content; // if (cb1.SelectedIndex == -1) // { // MessageBox.Show("请设置上传款式对应的品牌"); // cb1.Focus(); // return null; // } // RadComboBox cb2 = (RadComboBox)cbxQuarter.Content; // if (cb2.SelectedIndex == -1) // { // MessageBox.Show("请设置上传款式对应的季度"); // cb2.Focus(); // return null; // } // RadDatePicker dp = (RadDatePicker)SYear.Content; // if (string.IsNullOrEmpty(dp.DateTimeText)) // { // MessageBox.Show("请设置上传款式对应的年份"); // dp.Focus(); // return null; // } // var byq = DomainLogicEncap.ProductLogic.GetBYQ((int)cb1.SelectedValue, dp.DateTimeText, (int)cb2.SelectedValue); // if (byq == null) // { // MessageBox.Show("不存在对应的品牌年份季度信息"); // return null; // } // return byq; //} /// <summary> /// 上传款式图片 /// </summary> /// <returns>是否上传成功</returns> private void UploadPictureForSingleStyle(ProBYQ byq, StylePictureFile file, RadProgressBar pbProgress, RadButton btn) { var filePath = file.FilePath; var image = System.Drawing.Image.FromFile(filePath); //BitmapImage image = new BitmapImage(new Uri(filePath)); var transfer = new LargeDataTransfer() { Data = image }; transfer.CallbackEvent += delegate(int progress) { this.Dispatcher.Invoke(new Action(() => { pbProgress.Value = progress; })); }; var func = new Func <ProBYQ, string, ILargeDataTransfer, bool>(UploadPictureForSingleStyle); AsyncCallback callback = new AsyncCallback(ar => { //var func = (Func<ProStyleBYQ, string, ILargeDataTransfer, bool>)ar.AsyncState; var flag = func.EndInvoke(ar); var result = ProductDataContext.SaveSCPicture(file); if (!flag || !result.IsSucceed) { btn.IsEnabled = true; btn.Content = "重新上传"; file.UploadProgress = 0; file.UploadStatus = "上传失败"; //MessageBox.Show("上传失败"); } else { //ProSCPicture scp = new ProSCPicture { SCCode = System.IO.Path.GetFileNameWithoutExtension(filePath), PictureName = System.IO.Path.GetFileName(filePath) }; file.UploadStatus = "上传成功"; //MessageBox.Show("上传成功"); } }); func.BeginInvoke(byq, filePath, transfer, callback, func); //IAsyncResult ar = func.BeginInvoke(byq, filePath, transfer, null, null); //WaitHandle waitHandle = ar.AsyncWaitHandle; //waitHandle.WaitOne();//主线程等待,这里将产生死锁 //bool flag = false;//func.EndInvoke(ar); //new System.Threading.Thread(() => // { // UploadPictureForSingleStyle(byq, filePath); // }).Start(); }