public bool start(Font f, int _offset) { if (state == "Error" || state == "Start") { return(false); } DanmuForm temp = new DanmuForm("test", 1, Color.White, 20, 3000); offset = _offset; state = "Running"; DanmuForm.Dfont = f; TrueHeight = (int)g.MeasureString("A", f).Height + offset; return(true); }
public void additem(int type, string str, int time, int v, Color c) { //MessageBox.Show(""); if (state != "Running") { return; } //Debug.WriteLine("执行add内部" + AppDomain.GetCurrentThreadId().ToString()); if (handle == 0) { if (type == 1) { DanmuForm f1 = new DanmuForm(str, 1, c, 20, 3000); f1.Show(); int p_temp = random_screen.Next(0, (int)(Tools.ScreenHeight * scrennpart / TrueHeight)); while (p_temp == last_screen_position) { p_temp = random_screen.Next(0, (int)(Tools.ScreenHeight * scrennpart / TrueHeight)); } ; last_screen_position = p_temp; f1.Top = p_temp * TrueHeight; f1.Left = Tools.ScreenWidth; //f1.Left -= 300; f1.Show(); Task temp = new Task(async() => { // Debug.WriteLine("执行add thread内部" + AppDomain.GetCurrentThreadId().ToString()); //Tools.Message(Thread.CurrentThread.ManagedThreadId); while (!f1.token) { //Debug.WriteLine("A:" + AppDomain.GetCurrentThreadId().ToString() + " " + f1.Left.ToString() + " " + f1.Top.ToString()); f1.Left = f1.Left - 5; await Task.Delay(v); } f1.Close(); }); //process.Add(temp); -----之后完善 try { processdic.Add(temp, f1); temp.Start(); } catch { } //f1.startprocess(); } else if (type == 2) { //间隔过大问题---已解决(利用静态偏移变量解决) DanmuForm f1 = new DanmuForm(str, 2, c, 20, 3000); f1.Show(); f1.Left = (Tools.ScreenWidth - f1.Width) / 2; Task temp = new Task(async() => { int i = 0; for (; i < Screentoken.Length; i++) { if (!Screentoken[i]) { Screentoken[i] = true; break; } else if (i == Screentoken.Length - 1) { i = 0; } } //Tools.Message(i); f1.Top = i * TrueHeight; await Task.Delay(time); f1.Close(); Screentoken[i] = false; } ); temp.Start(); } else if (type == 3) { //暂缺 } } }