private void EnqueueNewToast(MiniToast mt) { ToastAddEventAgs e = new ToastAddEventAgs(); if (this.NewToastAdd != null) { this.NewToastAdd(this, e); Task.WaitAll(e.tasks.ToArray()); } this.NewToastAdd += new NewToastAddEventHandler(mt.ShiftTop); var t = new Thread(() => { System.Windows.Forms.Application.Run(mt); }); t.SetApartmentState(ApartmentState.STA); t.IsBackground = true; t.Start(); }
public void ShiftTop(object sender, ToastAddEventAgs e) { var t = new Task(() => { int y = this.Location.Y; for (int i = 1; i <= this.Height + 10; i += 5) { try { if (this.IsDisposed) { break; } this.Top = y - i; } catch (Exception) { break; } Thread.Sleep(20); } }); e.tasks.Add(t); t.Start(); }