/// <summary> /// 导出文件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsbExport_Click(object sender, EventArgs e) { var folderDialog = new FolderBrowserDialog(); if (folderDialog.ShowDialog() == DialogResult.OK) { string folderPath = folderDialog.SelectedPath; tsbExport.Enabled = false; this.notifyIcon1.BalloonTipText = "正在导出图片,请稍后。。"; this.notifyIcon1.ShowBalloonTip(3000); Bitmap bitmap = null; int index = 0; Asyn.Task(() => { while ((bitmap = StaticClass.Images.GetExportImage()) != null) { index++; bitmap.Save(System.IO.Path.Combine(folderPath, string.Format("{0}.png", index)), bitmap.RawFormat); } }).OnSuccess(() => { tsbExport.Enabled = true; this.notifyIcon1.BalloonTipText = string.Format("已成功导出{0}张", index); this.notifyIcon1.ShowBalloonTip(3000); }).OnError((ex) => { this.notifyIcon1.BalloonTipText = "导出处理失败。。"; this.notifyIcon1.ShowBalloonTip(3000); }).Start(); } }
/// <summary> /// 异步线程池 /// </summary> /// <returns></returns> private static Asyn AsynPool() { if (_asynPool == null) { _asynPool = new LinkedList <Asyn>(); for (int ii = 0; ii < POOLCOUNT; ii++) { _asynPool.AddLast(new Asyn()); } } while (true) { if (_asynPool.Count > 0) { Asyn t = _asynPool.First.Value; _asynPool.RemoveFirst(); return(t); } Thread.Sleep(50); } }