| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.ComponentModel;
 
- using System.Data;
 
- using System.Drawing;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Windows.Forms;
 
- using System.Reflection;
 
- using System.Threading;
 
- using System.Threading.Tasks;
 
- namespace WCS_Client
 
- {
 
-     public partial class FrmProcessing : Form
 
-     {
 
-         private static Image m_Image = null;
 
-         private EventHandler evtHandler = null;
 
-         private ParameterizedThreadStart workAction = null;
 
-         private object workActionArg = null;
 
-         private Thread workThread = null;
 
-         public string Message
 
-         {
 
-             get
 
-             {
 
-                 return lbMessage.Text;
 
-             }
 
-             set
 
-             {
 
-                 lbMessage.Text = value;
 
-             }
 
-         }
 
-         public bool WorkCompleted = false;
 
-         public Exception WorkException
 
-         { get; private set; }
 
-         public void SetWorkAction(ParameterizedThreadStart workAction, object arg)
 
-         {
 
-             this.workAction = workAction;
 
-             this.workActionArg = arg;
 
-         }
 
-         public FrmProcessing(string msg)
 
-         {
 
-             InitializeComponent();
 
-             this.Message = msg;
 
-         }
 
-         protected override void OnPaint(PaintEventArgs e)
 
-         {
 
-             base.OnPaint(e);
 
-             if (m_Image != null)
 
-             {
 
-                 //获得当前gif动画下一步要渲染的帧。
 
-                 UpdateImage();
 
-                 //将获得的当前gif动画需要渲染的帧显示在界面上的某个位置。
 
-                 int x = (int)(panImage.ClientRectangle.Width - m_Image.Width) / 2;
 
-                 int y = 0;
 
-                 //e.Graphics.DrawImage(m_Image, new Rectangle(x, y, m_Image.Width, m_Image.Height));
 
-                 panImage.CreateGraphics().DrawImage(m_Image, new Rectangle(x, y, m_Image.Width, m_Image.Height));
 
-             }
 
-             if (this.WorkCompleted)
 
-             {
 
-                 this.Close();
 
-             }
 
-         }
 
-         private void FrmProcessing_Load(object sender, EventArgs e)
 
-         {
 
-             if (this.Owner != null)
 
-             {
 
-                 this.StartPosition = FormStartPosition.Manual;
 
-                 this.Location = new Point(this.Owner.Left, this.Owner.Top);
 
-                 //MessageBox.Show(string.Format("X={0},Y={1}", this.Owner.Left, this.Owner.Top));
 
-                 this.Width = this.Owner.Width;
 
-                 this.Height = this.Owner.Height;
 
-             }
 
-             else
 
-             {
 
-                 Rectangle screenRect = Screen.PrimaryScreen.WorkingArea;
 
-                 this.Location = new Point((screenRect.Width - this.Width) / 2, (screenRect.Height - this.Height) / 2);
 
-             }
 
-             //为委托关联一个处理方法
 
-             evtHandler = new EventHandler(OnImageAnimate);
 
-             if (m_Image == null)
 
-             {
 
-                 Assembly assy = Assembly.GetExecutingAssembly();
 
-                 //获取要加载的gif动画文件
 
-                // m_Image = Image.FromStream(assy.GetManifestResourceStream(assy.GetName().Name + ".Resources.loding.gif"));
 
-                 m_Image = global::WCS_Client.Properties.Resources.loading;
 
-             }
 
-             //调用开始动画方法
 
-             BeginAnimate();
 
-         }
 
-         //开始动画方法
 
-         private void BeginAnimate()
 
-         {
 
-             if (m_Image != null)
 
-             {
 
-                 //当gif动画每隔一定时间后,都会变换一帧,那么就会触发一事件,该方法就是将当前image每变换一帧时,都会调用当前这个委托所关联的方法。
 
-                 ImageAnimator.Animate(m_Image, evtHandler);
 
-             }
 
-         }
 
-         //委托所关联的方法
 
-         private void OnImageAnimate(Object sender, EventArgs e)
 
-         {
 
-             //该方法中,只是使得当前这个winform重绘,然后去调用该winform的OnPaint()方法进行重绘)
 
-             this.Invalidate();
 
-         }
 
-         //获得当前gif动画的下一步需要渲染的帧,当下一步任何对当前gif动画的操作都是对该帧进行操作)
 
-         private void UpdateImage()
 
-         {
 
-             ImageAnimator.UpdateFrames(m_Image);
 
-         }
 
-         //关闭显示动画,该方法可以在winform关闭时,或者某个按钮的触发事件中进行调用,以停止渲染当前gif动画。
 
-         private void StopAnimate()
 
-         {
 
-             m_Image = null;
 
-             ImageAnimator.StopAnimate(m_Image, evtHandler);
 
-         }
 
-         private void FrmProcessing_Shown(object sender, EventArgs e)
 
-         {
 
-             if (this.workAction != null)
 
-             {
 
-                 workThread = new Thread(ExecWorkAction);
 
-                 workThread.IsBackground = true;
 
-                 workThread.Start();
 
-             }
 
-         }
 
-         private void ExecWorkAction()
 
-         {
 
-             try
 
-             {
 
-                 var workTask = new Task((arg) =>
 
-                 {
 
-                     this.workAction(arg);
 
-                 },
 
-                             this.workActionArg);
 
-                 workTask.Start();
 
-                 Task.WaitAll(workTask);
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 this.WorkException = ex;
 
-             }
 
-             finally
 
-             {
 
-                 //this.Close();
 
-                 this.WorkCompleted = true;
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |