System.Windows.Forms.Control.BeginInvoke(System.Delegate)

Here are the examples of the csharp api System.Windows.Forms.Control.BeginInvoke(System.Delegate) taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

518 Examples 7

19 Source : GenericViewRenderer.cs
with GNU General Public License v3.0
from BRH-Media

private static void DoDataBind(DataGridView target, DataTable bindData, GenericRenderStruct info)
        {
            try
            {
                //check if the DataGridView needs to be invoked first
                if (target.InvokeRequired)

                    //invoke the DataGridView so we don't thread-lock
                    target.BeginInvoke((MethodInvoker)delegate { DoDataBind(target, bindData, info); });
                else
                {
                    //we don't need to invoke, so just continue without it.
                    //bind the data to the grid ("render" the data)
                    target.DataSource = bindData;

                    //set the captions
                    Methods.SetHeaderText(target, info.Data);

                    //re-render the control
                    target.Refresh();
                }
            }
            catch (Exception ex)
            {
                //log and do nothing
                LoggingHelpers.RecordException(ex.Message, @"GenericViewRendererBindError");
            }
        }

19 Source : ServerViewRenderer.cs
with GNU General Public License v3.0
from BRH-Media

public static void RenderView(List<Server> data, bool renderTokenColumn, DataGridView target)
        {
            var name = new DataColumn("Name", typeof(string));
            var address = new DataColumn("Address", typeof(string));
            var port = new DataColumn("Port", typeof(string));
            var token = new DataColumn("Token", typeof(string));

            var dgvBind = new DataTable("Servers");

            dgvBind.Columns.Add(name);
            dgvBind.Columns.Add(address);
            dgvBind.Columns.Add(port);

            if (renderTokenColumn)
                dgvBind.Columns.Add(token);

            foreach (var r1 in data)
                if (renderTokenColumn)
                    dgvBind.Rows.Add(r1.name, r1.address, r1.port.ToString(), r1.accessToken);
                else
                    dgvBind.Rows.Add(r1.name, r1.address, r1.port.ToString());

            if (target.InvokeRequired)
            {
                target.BeginInvoke((MethodInvoker)delegate
               {
                   target.DataSource = dgvBind;
                   Methods.SortingEnabled(target, false);
                   target.Refresh();
               });
            }
            else
            {
                target.DataSource = dgvBind;
                Methods.SortingEnabled(target, false);
                target.Refresh();
            }
        }

19 Source : FrmShowText.cs
with MIT License
from cdmxz

private async void SleepAsync()
        {
            await Task.Run(() =>
            {
                try
                {
                    double opacity = 0.0;// 窗口透明度
                    while ((opacity += 0.2) <= 1.0 && !CloseWindowFlag) // 窗体渐变效果 
                    {
                        if (this.IsHandleCreated) // 判断窗口句柄是否存在
                            this.Invoke(new Action(() => SetOpacity(opacity)));
                        Thread.Sleep(200);
                    }
                    while (showMillisec > 0 && !CloseWindowFlag)
                    {
                        Thread.Sleep(50);
                        showMillisec -= 50;
                    }
                    while (IsKeyDown(Keys.ControlKey) && !CloseWindowFlag) // 如果按下键则等待键松开再关闭窗口
                        Thread.Sleep(50);
                    // 关闭主窗口的文字转语音
                    FrmMain frmMain = (FrmMain)this.Owner;
                    frmMain.CloseSpeak();
                    if (this.IsHandleCreated) // 判断窗口句柄是否存在
                        this.BeginInvoke(new Action(CloseWindow));
                }
                catch
                {
                    return;
                }
            });
        }

19 Source : MainForm.cs
with MIT License
from chrisnas

private void OnAccessResource(object state)
        {
            Random r = new Random();

            while (true)
            {
                _continueDeadlock.WaitOne();

                object[] parameters = (object[])state;
                int id = (int)parameters[0];

                lock (parameters[1])
                {
                    _resource1++;
                    lock (parameters[2])
                    {
                        _resource2++;

                        this.BeginInvoke(
                            (Action)(() =>
                            {
                                tbResult.Text = $"[{id}] - {_resource1} | {_resource2}";
                            })
                        );
                        Thread.Sleep((int)(500 + r.NextDouble() * 1000));
                    }
                }
            }
        }

19 Source : ExplorerBrowser.cs
with GNU General Public License v3.0
from CitizensReactor

protected override void OnCreateControl()
        {
            base.OnCreateControl();

            if (this.DesignMode == false)
            {
                explorerBrowserControl = new ExplorerBrowserClreplaced();

                // hooks up IExplorerPaneVisibility and ICommDlgBrowser event notifications
                ExplorerBrowserNativeMethods.IUnknown_SetSite(explorerBrowserControl, this);

                // hooks up IExplorerBrowserEvents event notification
                explorerBrowserControl.Advise(
                    Marshal.GetComInterfaceForObject(this, typeof(IExplorerBrowserEvents)),
                    out eventsCookie);

                // sets up ExplorerBrowser view connection point events
                viewEvents = new ExplorerBrowserViewEvents(this);

                NativeRect rect = new NativeRect();
                rect.Top = ClientRectangle.Top;
                rect.Left = ClientRectangle.Left;
                rect.Right = ClientRectangle.Right;
                rect.Bottom = ClientRectangle.Bottom;

                explorerBrowserControl.Initialize(this.Handle, ref rect, null);

                // Force an initial show frames so that IExplorerPaneVisibility works the first time it is set.
                // This also enables the control panel to be browsed to. If it is not set, then navigating to 
                // the control panel succeeds, but no items are visible in the view.
                explorerBrowserControl.SetOptions(ExplorerBrowserOptions.ShowFrames);

                explorerBrowserControl.SetPropertyBag(propertyBagName);

                if (antecreationNavigationTarget != null)
                {
                    BeginInvoke(new MethodInvoker(
                    delegate
                    {
                        Navigate(antecreationNavigationTarget);
                        antecreationNavigationTarget = null;
                    }));
                }
            }

            Application.AddMessageFilter(this);
        }

19 Source : FrmMain.cs
with MIT License
from cixingguangming55555

public void RunUi(Action action)
        {
            BeginInvoke(action);
        }

19 Source : TextArea.cs
with MIT License
from codewitch-honey-crisis

protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
		{
			int currentXPos = 0;
			int currentYPos = 0;
			bool adjustScrollBars = false;
			Graphics  g             = e.Graphics;
			Rectangle clipRectangle = e.ClipRectangle;
			
			bool isFullRepaint = clipRectangle.X == 0 && clipRectangle.Y == 0
				&& clipRectangle.Width == this.Width && clipRectangle.Height == this.Height;
			
			g.TextRenderingHint = this.TextEditorProperties.TextRenderingHint;
			
			if (updateMargin != null) {
				updateMargin.Paint(g, updateMargin.DrawingPosition);
//				clipRectangle.Intersect(updateMargin.DrawingPosition);
			}
			
			if (clipRectangle.Width <= 0 || clipRectangle.Height <= 0) {
				return;
			}
			
			foreach (AbstractMargin margin in leftMargins) {
				if (margin.IsVisible) {
					Rectangle marginRectangle = new Rectangle(currentXPos , currentYPos, margin.Size.Width, Height - currentYPos);
					if (marginRectangle != margin.DrawingPosition) {
						// margin changed size
						if (!isFullRepaint && !clipRectangle.Contains(marginRectangle)) {
							Invalidate(); // do a full repaint
						}
						adjustScrollBars = true;
						margin.DrawingPosition = marginRectangle;
					}
					currentXPos += margin.DrawingPosition.Width;
					if (clipRectangle.IntersectsWith(marginRectangle)) {
						marginRectangle.Intersect(clipRectangle);
						if (!marginRectangle.IsEmpty) {
							margin.Paint(g, marginRectangle);
						}
					}
				}
			}
			
			Rectangle textViewArea = new Rectangle(currentXPos, currentYPos, Width - currentXPos, Height - currentYPos);
			if (textViewArea != textView.DrawingPosition) {
				adjustScrollBars = true;
				textView.DrawingPosition = textViewArea;
				// update caret position (but outside of WM_PAINT!)
				BeginInvoke((MethodInvoker)caret.UpdateCaretPosition);
			}
			if (clipRectangle.IntersectsWith(textViewArea)) {
				textViewArea.Intersect(clipRectangle);
				if (!textViewArea.IsEmpty) {
					textView.Paint(g, textViewArea);
				}
			}
			
			if (adjustScrollBars) {
				this.motherTextAreaControl.AdjustScrollBars();
			}
			
			// we cannot update the caret position here, it's not allowed to call the caret API inside WM_PAINT
			//Caret.UpdateCaretPosition();
			
			base.OnPaint(e);
		}

19 Source : Main.cs
with MIT License
from codewitch-honey-crisis

async void _HandleTestLL1Parser(object sender, EventArgs e)
		{
			var fname = _GetFilename(fileTabs.SelectedTab);
			var ext = Path.GetExtension(fname).ToLowerInvariant();
			var name = Path.GetFileNameWithoutExtension(fname);
			var input = ActiveEditor.Text;
			var prog = new Progress();
			prog.Show(this);
			var test = new Test();
			test.Text = string.Concat(test.Text, " - ", fname);
			var sb = new StringBuilder();
			var hasErrors = false;
			messages.Items.Clear();
			await Task.Run((Action)(() =>
			{
				switch (ext)
				{
					case ".xbnf":
						input = _XbnfToPck(input, fname, prog);
						if (null == input)
							break;
						goto case ".pck";
					case ".pck":
						var cfg = CfgDoreplacedent.Parse(input);
						if (ext == ".pck")
							cfg.SetFilename(fname);
						var lex = LexDoreplacedent.Parse(input);
						foreach (var msg in cfg.TryValidateLL1())
						{
							if (ErrorLevel.Error == msg.ErrorLevel)
								hasErrors = true;
							var n = fname;
							_AddMessage(msg);
						}
						if (!hasErrors)
						{
							foreach (var msg in cfg.TryPrepareLL1(new _LL1Progress(prog)))
							{
								if (ErrorLevel.Error == msg.ErrorLevel)
									hasErrors = true;
								var n = fname;
								_AddMessage(msg);
							}
						}
						if (!hasErrors)
						{
							var tokenizer = lex.ToTokenizer(null, cfg.EnumSymbols(), new _FAProgress(prog));
							LL1Parser parser;
							foreach (var msg in cfg.TryToLL1Parser(out parser, tokenizer, new _LL1Progress(prog)))
							{
								if (Pck.ErrorLevel.Error == msg.ErrorLevel)
									hasErrors = true;
								var n = fname;
								_AddMessage(msg);
							}
							if (!hasErrors)
							{
								test.SetParser(parser);
								BeginInvoke(new Action<Form>(test.Show), this);

							}
							else BeginInvoke(new Action(test.Close));

						}
						else BeginInvoke(new Action(test.Close));

						break;
				}
			}));
			prog.Close();
		}

19 Source : Main.cs
with MIT License
from codewitch-honey-crisis

private async void _HandleTestLalr1Parser(object sender, EventArgs e)
		{
			var prog = new Progress();
			prog.Show(this);
			var fname = _GetFilename(fileTabs.SelectedTab);
			var ext = Path.GetExtension(fname).ToLowerInvariant();
			var name = Path.GetFileNameWithoutExtension(fname);
			var input = ActiveEditor.Text;
			var sb = new StringBuilder();
			var hasErrors = false;
			messages.Items.Clear();
			var test = new Test();
			test.Text = string.Concat(test.Text, " - ", fname);
			await Task.Run((Action)(() => {
				switch (ext)
				{
					case ".xbnf":
						input = _XbnfToPck(input, fname, prog);
						if (null == input)
							break;
						goto case ".pck";
					case ".pck":
						var cfg = CfgDoreplacedent.Parse(input);
						if (ext == ".pck")
							cfg.SetFilename(fname);
						var lex = LexDoreplacedent.Parse(input);
						foreach (var msg in cfg.TryValidateLalr1())
						{
							if (ErrorLevel.Error == msg.ErrorLevel)
								hasErrors = true;
							var n = fname;
							_AddMessage(msg);
						}
						if (!hasErrors)
						{
							var tokenizer = lex.ToTokenizer(null, cfg.EnumSymbols(), new _FAProgress(prog));
							Lalr1Parser parser;
							foreach (var msg in cfg.TryToLalr1Parser(out parser, tokenizer, new _Lalr1Progress(prog)))
							{
								if (ErrorLevel.Error == msg.ErrorLevel)
									hasErrors = true;
								var n = fname;
								_AddMessage(msg);
							}

							if (!hasErrors)
							{
								test.SetParser(parser);
								BeginInvoke(new Action<Form>(test.Show), this);
							}
							else BeginInvoke(new Action(test.Close));
						}
						else
							BeginInvoke(new Action(test.Close));

						break;
				}

			}));
			prog.Close();
		}

19 Source : Test.cs
with MIT License
from codewitch-honey-crisis

async void parseTimer_Tick(object sender, EventArgs e)
		{
			parseTimer.Enabled = false;
			ParseNode pt=null;
			if (null != _ll1Parser)
			{
				string text = editor.Text;
				
					_ll1Parser.Restart(text);
					_ll1Parser.ShowHidden = showHidden.Checked;
					while (LLNodeType.EndDoreplacedent != _ll1Parser.NodeType)
					{
						pt = _ll1Parser.ParseSubtree(trimTree.Checked, transformTree.Checked);
						if (null == pt.Value)
							break;
					}
				
			} else if(null!=_lalr1Parser)
			{
				string text = editor.Text;
				
					_lalr1Parser.Restart(text);
					_lalr1Parser.ShowHidden = showHidden.Checked;
					var opt = pt;
					while (LRNodeType.EndDoreplacedent != _lalr1Parser.NodeType && LRNodeType.Error !=_lalr1Parser.NodeType)
					{
						pt = _lalr1Parser.ParseReductions(trimTree.Checked, transformTree.Checked);
						if (null == pt || null == pt.Value)
							break;
						opt = pt;
					}
					if (null == pt)
						pt = opt;
				
			}
			parseTree.Nodes.Clear();
			if(null!=pt)
			{
				await Task.Run(() =>
				{
					var treeNode = new TreeNode();
					if (null != pt.Value)
					{
						treeNode.Text = string.Concat(pt.Symbol, ": ", pt.Value);
						treeNode.ImageIndex = ("#ERROR" == pt.Symbol) ? 2 : 1;
						treeNode.SelectedImageIndex = treeNode.ImageIndex;
						treeNode.Tag = pt;
						BeginInvoke(new Func<TreeNode, int>(parseTree.Nodes.Add), treeNode);
						BeginInvoke(new Action(treeNode.Expand));
					}
					else
					{
						treeNode.Text = pt.Symbol;
						treeNode.Tag = pt;
						foreach (var ptc in pt.Children)
						{
							_AddNodes(treeNode, ptc);
						}
						BeginInvoke(new Func<TreeNode, int>(parseTree.Nodes.Add), treeNode);
						BeginInvoke(new Action(treeNode.Expand));
					}
				});
				
			}
		}

19 Source : win11_downloadSystem.cs
with GNU General Public License v3.0
from coofcookie

private void downloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) {
            BeginInvoke((MethodInvoker) delegate {
                var bytesIn = double.Parse(e.BytesReceived.ToString());
                var totalBytes = double.Parse(e.TotalBytesToReceive.ToString());
                var percentage = bytesIn / totalBytes * 100;
                lblDownloadPercentage.Text = Math.Round(percentage, 1) + " %";
                progressDownload.Value = int.Parse(Math.Truncate(percentage).ToString());
            });
        }

19 Source : win11_downloadSystem.cs
with GNU General Public License v3.0
from coofcookie

private void downloadCompleted(object sender, AsyncCompletedEventArgs e) {
            BeginInvoke((MethodInvoker) delegate {
                globals.isoPath = Directory.GetCurrentDirectory() + "/win11.iso";
                Hide();
                var installSystem = new win11_installSystem();
                installSystem.Show();
            });
        }

19 Source : ExtensionMethods.cs
with GNU General Public License v2.0
from CrazyKTV

public static T BeginInvokeIfRequired<T>(this T source, Action<T> action) where T : Control
        {
            try
            {
                if (!source.InvokeRequired)
                    action(source);
                else
                    source.BeginInvoke(new Action(() => action(source)));
            }
            catch (Exception ex)
            {
                Console.Write("Error on 'BeginInvokeIfRequired': {0}", ex.Message);
            }
            return source;
        }

19 Source : MainCfg.cs
with GNU General Public License v2.0
from CrazyKTV

private void MainCfg_ExportSQLite_Button_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("你確定要匯出 SQLite 資料庫嗎?", "確認提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                Common_SwitchSetUI(false);

                var tasks = new List<Task>()
                {
                    Task.Factory.StartNew(() => MainCfg_ExportSQLiteTask())
                };

                Task.Factory.ContinueWhenAll(tasks.ToArray(), MainCfg_ExportSQLiteEndTask =>
                {
                    this.BeginInvoke((Action)delegate()
                    {
                        Common_SwitchSetUI(true);
                    });
                });
            }
        }

19 Source : MainCfg.cs
with GNU General Public License v2.0
from CrazyKTV

private void MainCfg_NonSingerDataLog_Button_Click(object sender, EventArgs e)
        {
            Global.TimerStartTime = DateTime.Now;
            Global.TotalList = new List<int>() { 0, 0, 0, 0 };
            SingerMgr.CreateSongDataTable();
            Common_SwitchSetUI(false);

            MainCfg_Tooltip_Label.Text = "正在解析歌庫歌手資料,請稍待...";

            var tasks = new List<Task>() { Task.Factory.StartNew(() => MainCfg_NonSingerDataLogTask()) };

            Task.Factory.ContinueWhenAll(tasks.ToArray(), EndTask =>
            {
                Global.TimerEndTime = DateTime.Now;
                this.BeginInvoke((Action)delegate()
                {
                    MainCfg_Tooltip_Label.Text = "總共從歌庫歌曲解析出 " + Global.TotalList[0] + " 筆歌手資料,查詢到 " + Global.TotalList[1] + " 筆歌手無資料,共花費 " + (long)(Global.TimerEndTime - Global.TimerStartTime).TotalSeconds + " 秒完成。";
                    Common_SwitchSetUI(true);
                });
                SingerMgr.DisposeSongDataTable();
            });
        }

19 Source : MainCfg.cs
with GNU General Public License v2.0
from CrazyKTV

private void MainCfg_NonSingerDataLogTask()
        {
            Thread.CurrentThread.Priority = ThreadPriority.Lowest;
            List<string> list = new List<string>();
            List<string> Singerlist = new List<string>();
            List<string> SpecialStrlist = new List<string>(Regex.Split(Global.SongAddSpecialStr, @"\|", RegexOptions.IgnoreCase));

            DataTable dt = new DataTable();
            string SingerQuerySqlStr = "SELECT First(Song_Singer) AS Song_Singer, First(Song_SingerType) AS Song_SingerType, Count(Song_Singer) AS Song_SingerCount FROM ktv_Song GROUP BY Song_Singer HAVING First(Song_SingerType)<=10 AND First(Song_SingerType)<>8 AND First(Song_SingerType)<>9 AND Count(Song_Singer)>0 ORDER BY First(Song_SingerType), First(Song_Singer)";
            dt = CommonFunc.GetOleDbDataTable(Global.CrazyktvDatabaseFile, SingerQuerySqlStr, "");

            if (dt.Rows.Count > 0)
            {
                string SingerName = "";
                string SingerType = "";

                foreach (DataRow row in dt.AsEnumerable())
                {
                    SingerName = row["Song_Singer"].ToString();
                    SingerType = row["Song_SingerType"].ToString();

                    if (SingerType == "3")
                    {
                        List<string> slist = CommonFunc.GetChorusSingerList(SingerName);
                        foreach (string str in slist)
                        {
                            string ChorusSingerName = Regex.Replace(str, @"^\s*|\s*$", ""); //去除頭尾空白
                            if (Singerlist.IndexOf(ChorusSingerName) < 0)
                            {
                                // 查找資料庫預設歌手資料表
                                if (SingerMgr.AllSingerLowCaseList.IndexOf(ChorusSingerName.ToLower()) < 0)
                                {
                                    if (list.IndexOf(ChorusSingerName) < 0)
                                    {
                                        list.Add(ChorusSingerName);
                                        lock (LockThis) { Global.TotalList[1]++; }
                                    }
                                }
                                Singerlist.Add(ChorusSingerName);
                            }
                        }
                        slist.Clear();
                        slist = null;
                    }
                    else
                    {
                        if (Singerlist.IndexOf(SingerName) < 0)
                        {
                            if (SingerMgr.AllSingerLowCaseList.IndexOf(SingerName.ToLower()) < 0)
                            {
                                if (list.IndexOf(SingerName) < 0)
                                {
                                    list.Add(SingerName);
                                    lock (LockThis) { Global.TotalList[1]++; }
                                }
                            }
                            Singerlist.Add(SingerName);
                        }
                    }
                    lock (LockThis) { Global.TotalList[0]++; }
                    this.BeginInvoke((Action)delegate()
                    {
                        MainCfg_Tooltip_Label.Text = "已解析到 " + Global.TotalList[0] + " 位歌手資料,請稍待...";
                    });
                }
            }
            Singerlist.Clear();
            dt.Dispose();

            if (list.Count > 0)
            {
                foreach (string str in list)
                {
                    Global.SongLogDT.Rows.Add(Global.SongLogDT.NewRow());
                    Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][0] = "【記錄無資料歌手】未在預設歌手資料表的歌手: " + str;
                    Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][1] = Global.SongLogDT.Rows.Count;
                }
            }
        }

19 Source : MainCfg.cs
with GNU General Public License v2.0
from CrazyKTV

private void MainCfg_NonPhoneticsWordLog_Button_Click(object sender, EventArgs e)
        {
            Global.TimerStartTime = DateTime.Now;
            Global.TotalList = new List<int>() { 0, 0, 0, 0 };
            SongMaintenance.CreateSongDataTable();
            Common_SwitchSetUI(false);

            var tasks = new List<Task>() { Task.Factory.StartNew(() => MainCfg_NonPhoneticsWordLogTask()) };

            Task.Factory.ContinueWhenAll(tasks.ToArray(), EndTask =>
            {
                Global.TimerEndTime = DateTime.Now;
                this.BeginInvoke((Action)delegate()
                {
                    MainCfg_Tooltip_Label.Text = "總共從 " + Global.TotalList[0] + " 首歌曲,查詢到 " + Global.TotalList[1] + " 筆無拼音資料的文字,共花費 " + (long)(Global.TimerEndTime - Global.TimerStartTime).TotalSeconds + " 秒完成。";
                    Common_SwitchSetUI(true);
                });
                SongMaintenance.DisposeSongDataTable();
            });
        }

19 Source : MainCfg.cs
with GNU General Public License v2.0
from CrazyKTV

private void MainCfg_NonPhoneticsWordLogTask()
        {
            Thread.CurrentThread.Priority = ThreadPriority.BelowNormal;
            List<string> list = new List<string>();

            string SongQuerySqlStr = "select Song_Id, Song_Lang, Song_SingerType, Song_Singer, Song_SongName, Song_Track, Song_SongType, Song_Volume, Song_PlayCount, Song_FileName, Song_Path from ktv_Song order by Song_Id";
            using (DataTable SongDT = CommonFunc.GetOleDbDataTable(Global.CrazyktvDatabaseFile, SongQuerySqlStr, ""))
            {
                string MatchWord = "";
                List<string> wordlist = new List<string>();

                Parallel.ForEach(SongDT.AsEnumerable(), (row, loopState) =>
                {
                    Thread.CurrentThread.Priority = ThreadPriority.BelowNormal;
                    MatchWord = row["Song_Singer"].ToString() + row["Song_SongName"].ToString();
                    MatchWord = Regex.Replace(MatchWord, @"[\{\(\[{([【].+?[】])}\]\)\}]", "");

                    if (MatchWord != "")
                    {
                        MatchCollection CJKCharMatches = Regex.Matches(MatchWord, @"([\u2E80-\u33FF]|[\u4E00-\u9FCC\u3400-\u4DB5\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\ud840-\ud868][\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|[\ud86a-\ud86c][\udc00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d]|[\uac00-\ud7ff])");
                        if (CJKCharMatches.Count > 0)
                        {
                            foreach (Match m in CJKCharMatches)
                            {
                                if (wordlist.IndexOf(m.Value) < 0)
                                {
                                    // 查找資料庫拼音資料
                                    if (Global.PhoneticsWordList.IndexOf(m.Value) < 0)
                                    {
                                        if (list.IndexOf(m.Value) < 0)
                                        {
                                            list.Add(m.Value);
                                            lock (LockThis) { Global.TotalList[1]++; }
                                        }
                                    }
                                    wordlist.Add(m.Value);
                                }
                            }
                        }
                    }
                    lock (LockThis) { Global.TotalList[0]++; }
                    this.BeginInvoke((Action)delegate()
                    {
                        MainCfg_Tooltip_Label.Text = "正在解析第 " + Global.TotalList[0] + " 首歌曲的拼音資料,請稍待...";
                    });
                });
                wordlist.Clear();
            }

            if (list.Count > 0)
            {
                foreach (string str in list)
                {
                    Global.SongLogDT.Rows.Add(Global.SongLogDT.NewRow());
                    Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][0] = "【記錄無拼音字】未在拼音資料表的文字: " + str;
                    Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][1] = Global.SongLogDT.Rows.Count;
                }
            }
            list.Clear();
        }

19 Source : SingerMgrDataGridView.cs
with GNU General Public License v2.0
from CrazyKTV

private void SingerMgr_DataGridView_ContextMenuItem_RightClick(object sender, EventArgs e)
        {
            switch (sender.ToString())
            {
                case "查詢歌曲":
                    string SingerName = SingerMgr_DataGridView.SelectedRows[0].Cells["Singer_Name"].Value.ToString();
                    SongQuery_QueryType_ComboBox.SelectedValue = 2;
                    SongQuery_QueryValue_TextBox.Text = SingerName;
                    SongQuery_QueryFilter_ComboBox.SelectedValue = 1;
                    SongQuery_EditMode_CheckBox.Checked = false;
                    SongQuery_Query_Button_Click(new Button(), new EventArgs());
                    MainTabControl.SelectedIndex = MainTabControl.TabPages.IndexOf(SongQuery_TabPage);
                    break;
                case "移除歌手":
                    if (MessageBox.Show("你確定要移除歌手嗎?", "刪除提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        List<string> RemoveSingerIdlist = new List<string>();
                        foreach (DataGridViewRow row in SingerMgr_DataGridView.SelectedRows)
                        {
                            RemoveSingerIdlist.Add(row.Cells["Singer_Id"].Value.ToString());
                        }

                        using (DataTable dt = (DataTable)SingerMgr_DataGridView.DataSource)
                        {
                            List<DataRow> RemoveRomList = new List<DataRow>();
                            foreach (DataRow row in dt.Rows)
                            {
                                if (RemoveSingerIdlist.IndexOf(row["Singer_Id"].ToString()) > -1)
                                {
                                    RemoveRomList.Add(row);
                                }
                            }

                            foreach (DataRow row in RemoveRomList)
                            {
                                dt.Rows.Remove(row);
                            }
                            RemoveRomList.Clear();
                        }

                        Global.TotalList = new List<int>() { 0, 0, 0, 0 };
                        Common_SwitchSetUI(false);
                        var tasks = new List<Task>()
                        {
                            Task.Factory.StartNew(() => SingerMgr_SingerRemoveTask(RemoveSingerIdlist))
                        };

                        Task.Factory.ContinueWhenAll(tasks.ToArray(), EndTask =>
                        {
                            this.BeginInvoke((Action)delegate()
                            {
                                Common_SwitchSetUI(true);
                                Task.Factory.StartNew(() => Common_GetSingerStatisticsTask());
                                SingerMgr_Tooltip_Label.Text = "已成功移除 " + Global.TotalList[0] + " 位歌手資料。";
                                RemoveSingerIdlist.Clear();
                            });
                        });
                    }
                    break;
            }
        }

19 Source : SingerMgrDataGridView.cs
with GNU General Public License v2.0
from CrazyKTV

private void SingerMgr_DataGridView_KeyDown(object sender, KeyEventArgs e)
        {
            if (SingerMgr_EditMode_CheckBox.Checked == true)
            {
                if (SingerMgr_DataGridView.SelectedRows.Count > 0)
                {
                    switch (e.KeyCode)
                    {
                        case Keys.Delete:
                            if (MessageBox.Show("你確定要移除歌手嗎?", "刪除提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                            {
                                List<string> RemoveSingerIdlist = new List<string>();
                                foreach (DataGridViewRow row in SingerMgr_DataGridView.SelectedRows)
                                {
                                    RemoveSingerIdlist.Add(row.Cells["Singer_Id"].Value.ToString());
                                }

                                using (DataTable dt = (DataTable)SingerMgr_DataGridView.DataSource)
                                {
                                    List<DataRow> RemoveRomList = new List<DataRow>();
                                    foreach (DataRow row in dt.Rows)
                                    {
                                        if (RemoveSingerIdlist.IndexOf(row["Singer_Id"].ToString()) > -1)
                                        {
                                            RemoveRomList.Add(row);
                                        }
                                    }

                                    foreach (DataRow row in RemoveRomList)
                                    {
                                        dt.Rows.Remove(row);
                                    }
                                    RemoveRomList.Clear();
                                }

                                Global.TotalList = new List<int>() { 0, 0, 0, 0 };
                                Common_SwitchSetUI(false);
                                var tasks = new List<Task>()
                                {
                                    Task.Factory.StartNew(() => SingerMgr_SingerRemoveTask(RemoveSingerIdlist))
                                };

                                Task.Factory.ContinueWhenAll(tasks.ToArray(), EndTask =>
                                {
                                    this.BeginInvoke((Action)delegate()
                                    {
                                        Common_SwitchSetUI(true);
                                        Task.Factory.StartNew(() => Common_GetSingerStatisticsTask());
                                        SingerMgr_Tooltip_Label.Text = "已成功移除 " + Global.TotalList[0] + " 位歌手資料。";
                                        RemoveSingerIdlist.Clear();
                                    });
                                });
                            }
                            break;
                    }
                }
            }
        }

19 Source : SongDBConverter.cs
with GNU General Public License v2.0
from CrazyKTV

private void SongDBConverter_ConvFromSrcDBTask(object DBType)
        {
            Thread.CurrentThread.Priority = ThreadPriority.Lowest;
            Global.SongDBConvValueList = new List<string>();
            Global.TotalList = new List<int>() { 0, 0, 0, 0 };
            string SongSrcDBFile = SongDBConverter_SrcDBFile_TextBox.Text;
            string SongDestDBFile = SongDBConverter_DestDBFile_TextBox.Text;

            SongDBConverterSongDB.CreateSongDataTable((int)DBType, SongSrcDBFile);

            int count = Global.SongSrcDT.Rows.Count;

            for (int i = 0; i < count; i++)
            //Parallel.For(0, count, (i, loopState) =>
            {
                switch ((int)DBType)
                {
                    case 2:
                        SongDBConverterSongDB.StartConvFromJetktvDB(i);
                        break;
                    case 3:
                        SongDBConverterSongDB.StartConvFromHomeKara2DB(i);
                        break;
                }
                
                this.BeginInvoke((Action)delegate()
                {
                    SongDBConverter_Tooltip_Label.Text = "已成功解析 " + Global.TotalList[0] + " 首歌曲...";
                });
            }//);

            // 加入歌曲
            OleDbConnection conn = CommonFunc.OleDbOpenConn(SongDestDBFile, "");
            OleDbCommand cmd = new OleDbCommand();
            string sqlColumnStr = "Song_Id, Song_Lang, Song_SingerType, Song_Singer, Song_SongName, Song_Track, Song_SongType, Song_Volume, Song_WordCount, Song_PlayCount, Song_MB, Song_CreatDate, Song_FileName, Song_Path, Song_Spell, Song_SpellNum, Song_SongStroke, Song_PenStyle, Song_PlayState";
            string sqlValuesStr = "@SongId, @SongLang, @SongSingerType, @SongSinger, @SongSongName, @SongTrack, @SongSongType, @SongVolume, @SongWordCount, @SongPlayCount, @SongMB, @SongCreatDate, @SongFileName, @SongPath, @SongSpell, @SongSpellNum, @SongSongStroke, @SongPenStyle, @SongPlayState";
            string SongDBConverterSqlStr = "insert into ktv_Song ( " + sqlColumnStr + " ) values ( " + sqlValuesStr + " )";
            cmd = new OleDbCommand(SongDBConverterSqlStr, conn);
            List<string> valuelist = new List<string>();

            foreach (string str in Global.SongDBConvValueList)
            {
                valuelist = new List<string>(str.Split('|'));

                cmd.Parameters.AddWithValue("@SongId", valuelist[0]);
                cmd.Parameters.AddWithValue("@SongLang", valuelist[1]);
                cmd.Parameters.AddWithValue("@SongSingerType", valuelist[2]);
                cmd.Parameters.AddWithValue("@SongSinger", valuelist[3]);
                cmd.Parameters.AddWithValue("@SongSongName", valuelist[4]);
                cmd.Parameters.AddWithValue("@SongTrack", valuelist[5]);
                cmd.Parameters.AddWithValue("@SongSongType", valuelist[6]);
                cmd.Parameters.AddWithValue("@SongVolume", valuelist[7]);
                cmd.Parameters.AddWithValue("@SongWordCount", valuelist[8]);
                cmd.Parameters.AddWithValue("@SongPlayCount", valuelist[9]);
                cmd.Parameters.AddWithValue("@SongMB", valuelist[10]);
                cmd.Parameters.AddWithValue("@SongCreatDate", valuelist[11]);
                cmd.Parameters.AddWithValue("@SongFileName", valuelist[12]);
                cmd.Parameters.AddWithValue("@SongPath", valuelist[13]);
                cmd.Parameters.AddWithValue("@SongSpell", valuelist[14]);
                cmd.Parameters.AddWithValue("@SongSpellNum", valuelist[15]);
                cmd.Parameters.AddWithValue("@SongSongStroke", valuelist[16]);
                cmd.Parameters.AddWithValue("@SongPenStyle", valuelist[17]);
                cmd.Parameters.AddWithValue("@SongPlayState", valuelist[18]);

                try
                {
                    cmd.ExecuteNonQuery();
                    Global.TotalList[3]++;
                }
                catch
                {
                    Global.SongLogDT.Rows.Add(Global.SongLogDT.NewRow());
                    Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][0] = "【歌庫轉換】寫入至資料庫時發生錯誤: " + str;
                    Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][1] = Global.SongLogDT.Rows.Count;
                    Global.TotalList[0]--;
                    Global.TotalList[2]++;
                }
                cmd.Parameters.Clear();

                this.BeginInvoke((Action)delegate()
                {
                    SongDBConverter_Tooltip_Label.Text = "正在將第 " + Global.TotalList[3] + " 首歌曲寫入資料庫,請稍待...";
                });

            }
            Global.SongDBConvValueList.Clear();

            // 加入歌手
            OleDbCommand singercmd = new OleDbCommand();
            sqlColumnStr = "Singer_Id, Singer_Name, Singer_Type, Singer_Spell, Singer_Strokes, Singer_SpellNum, Singer_PenStyle";
            sqlValuesStr = "@SingerId, @SingerName, @SingerType, @SingerSpell, @SingerStrokes, @SingerSpellNum, @SingerPenStyle";
            string SingerAddSqlStr = "insert into ktv_Singer ( " + sqlColumnStr + " ) values ( " + sqlValuesStr + " )";
            singercmd = new OleDbCommand(SingerAddSqlStr, conn);

            List<string> NotExistsSingerId = new List<string>();
            NotExistsSingerId = CommonFunc.GetUnusedSingerId("ktv_Singer", SongDestDBFile);
            int MaxSingerId = CommonFunc.GetMaxSingerId("ktv_Singer", SongDestDBFile) + 1;
            string NextSingerId = "";
            List<string> spelllist = new List<string>();

            DataTable dt = new DataTable();
            string SingerQuerySqlStr = "SELECT First(Song_Singer) AS Song_Singer, First(Song_SingerType) AS Song_SingerType, Count(Song_Singer) AS Song_SingerCount FROM ktv_Song GROUP BY Song_Singer HAVING (((First(Song_SingerType))<>3) AND ((Count(Song_Singer))>0)) ORDER BY First(Song_SingerType), First(Song_Singer)";
            dt = CommonFunc.GetOleDbDataTable(SongDestDBFile, SingerQuerySqlStr, "");
            count = dt.Rows.Count;

            if (count > 0)
            {
                for (int i = 0; i < count; i++)
                {
                    if (NotExistsSingerId.Count > 0)
                    {
                        NextSingerId = NotExistsSingerId[0];
                        NotExistsSingerId.RemoveAt(0);
                    }
                    else
                    {
                        NextSingerId = MaxSingerId.ToString();
                        MaxSingerId++;
                    }

                    valuelist = new List<string>()
                    {
                        dt.Rows[i].Field<string>("Song_Singer"),
                        dt.Rows[i].Field<Int16>("Song_SingerType").ToString()
                    };

                    spelllist = new List<string>(CommonFunc.GetSongNameSpell(valuelist[0]));

                    singercmd.Parameters.AddWithValue("@SingerId", NextSingerId);
                    singercmd.Parameters.AddWithValue("@SingerName", valuelist[0]);
                    singercmd.Parameters.AddWithValue("@SingerType", valuelist[1]);
                    singercmd.Parameters.AddWithValue("@SingerSpell", spelllist[0]);
                    singercmd.Parameters.AddWithValue("@SingerStrokes", spelllist[2]);
                    singercmd.Parameters.AddWithValue("@SingerSpellNum", spelllist[1]);
                    singercmd.Parameters.AddWithValue("@SingerPenStyle", spelllist[3]);

                    try
                    {
                        singercmd.ExecuteNonQuery();
                    }
                    catch
                    {
                        Global.SongLogDT.Rows.Add(Global.SongLogDT.NewRow());
                        Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][0] = "【歌庫轉換】加入歌手至 ktv_Singer 時發生錯誤: " + valuelist[0];
                        Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][1] = Global.SongLogDT.Rows.Count;
                    }
                    singercmd.Parameters.Clear();
                    
                    this.BeginInvoke((Action)delegate()
                    {
                        SongDBConverter_Tooltip_Label.Text = "已成功將 " + (i + 1) + " 位新歌手加入至資料庫,請稍待...";
                    });
                }
            }
            dt.Dispose();
            conn.Close();

            this.BeginInvoke((Action)delegate()
            {
                Global.TimerEndTime = DateTime.Now;
                SongDBConverter_Tooltip_Label.Text = "總共轉換 " + Global.TotalList[0] + " 首歌曲,忽略 " + Global.TotalList[1] + " 首,失敗 " + Global.TotalList[2] + " 首,共花費 " + (long)(Global.TimerEndTime - Global.TimerStartTime).TotalSeconds + " 秒完成轉換。";

                SongDBConverter_SrcDBFile_TextBox.Text = "";
                SongDBConverter_DestDBFile_TextBox.Text = "";
                SongDBConverter_SrcDBFile_Button.Enabled = true;
                SongDBConverter_SrcDBType_ComboBox.Enabled = true;
                SongDBConverter_DestDBFile_Button.Enabled = true;
                SongDBConverter_JetktvPathCfg_GroupBox.Enabled = true;
                SongDBConverter_JetktvLangCfg_GroupBox.Enabled = true;
                SongDBConverter_Converter_GroupBox.Enabled = true;

                Common_SwitchSetUI(true);
            });
            SongDBConverterSongDB.DisposeSongDataTable();
        }

19 Source : SongDBUpdate.cs
with GNU General Public License v2.0
from CrazyKTV

private void SongDBUpdate_CheckDatabaseVersion()
        {
            bool UpdateDBStatus = false;
            double SongDBVer = Convert.ToDouble(Global.CrazyktvSongDBVer);
            string CashboxUpdDate = "";

            string VersionQuerySqlStr = "select * from ktv_Version";
            using (DataTable dt = CommonFunc.GetOleDbDataTable(Global.CrazyktvSongMgrDatabaseFile, VersionQuerySqlStr, ""))
            {
                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow row in dt.Rows)
                    {
                        CashboxUpdDate = row["CashboxUpdDate"].ToString();
                    }
                    Global.CashboxUpdDate = DateTime.Parse(CashboxUpdDate);

                    this.BeginInvoke((Action)delegate()
                    {
                        SongMaintenance_DBVer1Value_Label.Text = SongDBVer.ToString("F2") + " 版";
                        Cashbox_UpdDateValue_Label.Text = (CultureInfo.CurrentCulture.Name == "zh-TW") ? DateTime.Parse(CashboxUpdDate).ToLongDateString() : DateTime.Parse(CashboxUpdDate).ToShortDateString();
                    });

                    if (Global.DBVerEnableDBVerUpdate == "True")
                    {
                        if (!Directory.Exists(Application.StartupPath + @"\SongMgr\Update")) Directory.CreateDirectory(Application.StartupPath + @"\SongMgr\Update");
                        
                        string url = "https://raw.githubusercontent.com/CrazyKTV/SongMgr/master/CrazyKTV_SongMgr/SongMgr/Update/UpdateDB.xml";
                        using (MemoryStream ms = CommonFunc.Download(url))
                        {
                            if (ms.Length > 0)
                            {
                                ms.Position = 0;
                                Global.CrazyktvSongDBVer = CommonFunc.LoadConfigXmlFile("", "SongDBVer", ms, true);

                                if (File.Exists(Global.CrazyktvDatabaseFile))
                                {
                                    if (Convert.ToDouble(Global.CrazyktvSongDBVer) > SongDBVer)
                                    {
                                        this.BeginInvoke((Action)delegate ()
                                        {
                                            if (MessageBox.Show("你確定要更新歌庫版本嗎?", "偵測到歌庫版本更新", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                                            {
                                                Global.SongMgrDBVerErrorUIStatus = false;
                                                MainTabControl.SelectedIndex = MainTabControl.TabPages.IndexOf(SongMaintenance_TabPage);
                                                SongMaintenance_TabControl.SelectedIndex = SongMaintenance_TabControl.TabPages.IndexOf(SongMaintenance_DBVer_TabPage);
                                                SongMaintenance_DBVerTooltip_Label.Text = "開始進行歌庫版本更新...";
                                                UpdateDBStatus = true;
                                                var UpdateDBTask = Task.Factory.StartNew(() => SongDBUpdate_UpdateDatabaseFile());
                                            }
                                        });
                                    }
                                }
                            }
                        }
                    }
                }
                if (!UpdateDBStatus) SongDBUpdate_UpdateFinish();
            }
        }

19 Source : SongDBUpdate.cs
with GNU General Public License v2.0
from CrazyKTV

[System.Diagnostics.Codereplacedysis.SuppressMessage("Microsoft.Security", "CA2100:必須檢閱 SQL 查詢中是否有安全性弱點")]
        private void SongDBUpdate_UpdateDatabaseFile()
        {
            Global.TimerStartTime = DateTime.Now;

            using (OleDbConnection conn = CommonFunc.OleDbOpenConn(Global.CrazyktvDatabaseFile, ""))
            {
                bool UpdateError = false;

                if (!Directory.Exists(Application.StartupPath + @"\SongMgr\Backup")) Directory.CreateDirectory(Application.StartupPath + @"\SongMgr\Backup");
                string SongDBBackupFile = SongDBBackupFile = Application.StartupPath + @"\SongMgr\Backup\" + DateTime.Now.ToLongDateString() + "_CrazySong.mdb";
                File.Copy(Global.CrazyktvDatabaseFile, SongDBBackupFile, true);

                List<string> CrazyktvDBTableList = new List<string>(CommonFunc.GetOleDbTableList(Global.CrazyktvDatabaseFile, ""));

                // 移除 ktv_AllSinger 資料表
                if (CrazyktvDBTableList.IndexOf("ktv_AllSinger") >= 0)
                {
                    using (OleDbCommand cmd = new OleDbCommand("drop table ktv_AllSinger", conn))
                    {
                        try
                        {
                            cmd.ExecuteNonQuery();
                            cmd.Parameters.Clear();
                        }
                        catch
                        {
                            UpdateError = true;
                            this.BeginInvoke((Action)delegate ()
                            {
                                SongMaintenance_DBVerTooltip_Label.Text = "移除 ktv_AllSinger 資料表失敗,已還原為原本的資料庫檔案。";
                            });
                        }
                    }
                }

                // 移除 ktv_Version 資料表
                if (CrazyktvDBTableList.IndexOf("ktv_Version") >= 0)
                {
                    using (OleDbCommand cmd = new OleDbCommand("drop table ktv_Version", conn))
                    {
                        try
                        {
                            cmd.ExecuteNonQuery();
                            cmd.Parameters.Clear();
                        }
                        catch
                        {
                            UpdateError = true;
                            this.BeginInvoke((Action)delegate ()
                            {
                                SongMaintenance_DBVerTooltip_Label.Text = "移除 ktv_Version 資料表失敗,已還原為原本的資料庫檔案。";
                            });
                        }
                    }
                }
                CrazyktvDBTableList.Clear();
                CrazyktvDBTableList = null;

                if (!UpdateError)
                {
                    bool UpdateKtvSong = false;
                    bool UpdateKtvSinger = false;
                    bool UpdatePhonetics = false;
                    bool UpdateLangauage = true;
                    bool UpdateFavorite = false;
                    bool AddSongReplayGainColumn = true;
                    bool RemoveSongMeanVolumeColumn = false;
                    bool RemoveGodLiuColumn = false;
                    List<string> GodLiuColumnlist = new List<string>();

                    List<string> tablelist = new List<string>() { "ktv_Singer", "ktv_Phonetics", "ktv_Langauage", "ktv_User", "ktv_Favorite" };
                    String[] Restrictions = new String[4];
                    Restrictions[2] = "ktv_Song";
                    using (DataTable dt = conn.GetSchema("Columns", Restrictions))
                    {
                        foreach (string tablename in tablelist)
                        {
                            Restrictions[2] = tablename;
                            using (DataTable tb = conn.GetSchema("Columns", Restrictions))
                            {
                                foreach (DataRow row in tb.Rows)
                                {
                                    dt.ImportRow(row);
                                }
                            }
                        }
                        tablelist.Clear();
                        tablelist = null;

                        foreach (DataRow row in dt.Rows)
                        {
                            switch (row["COLUMN_NAME"].ToString())
                            {
                                case "Song_SongName":
                                    if (row["CHARACTER_MAXIMUM_LENGTH"].ToString() != "80") UpdateKtvSong = true;
                                    break;
                                case "Song_Singer":
                                    if (row["CHARACTER_MAXIMUM_LENGTH"].ToString() != "60") UpdateKtvSong = true;
                                    break;
                                case "Song_Spell":
                                    if (row["CHARACTER_MAXIMUM_LENGTH"].ToString() != "80") UpdateKtvSong = true;
                                    break;
                                case "Song_FileName":
                                    if (row["CHARACTER_MAXIMUM_LENGTH"].ToString() != "255") UpdateKtvSong = true;
                                    break;
                                case "Song_SpellNum":
                                    if (row["CHARACTER_MAXIMUM_LENGTH"].ToString() != "80") UpdateKtvSong = true;
                                    break;
                                case "Song_PenStyle":
                                    if (row["CHARACTER_MAXIMUM_LENGTH"].ToString() != "80") UpdateKtvSong = true;
                                    break;
                                case "Song_ReplayGain":
                                    AddSongReplayGainColumn = false;
                                    break;
                                case "Song_MeanVolume":
                                    RemoveSongMeanVolumeColumn = true;
                                    break;
                                case "Singer_Name":
                                case "Singer_Spell":
                                case "Singer_SpellNum":
                                case "Singer_PenStyle":
                                    if (row["CHARACTER_MAXIMUM_LENGTH"].ToString() != "60") UpdateKtvSinger = true;
                                    break;
                                case "PenStyle":
                                    if (row["CHARACTER_MAXIMUM_LENGTH"].ToString() != "40") UpdatePhonetics = true;
                                    break;
                                case "Langauage_KeyWord":
                                    UpdateLangauage = false;
                                    break;
                                case "User_Id":
                                    if (row["CHARACTER_MAXIMUM_LENGTH"].ToString() != "12") UpdateFavorite = true;
                                    break;
                                case "Song_SongNameFuzzy":
                                case "Song_SingerFuzzy":
                                case "Song_FuzzyVer":
                                case "DLspace":
                                case "Epreplacedwd":
                                case "imgpath":
                                case "cashboxsongid":
                                case "cashboxdat":
                                case "holidaysongid":
                                    RemoveGodLiuColumn = true;
                                    GodLiuColumnlist.Add(row["COLUMN_NAME"].ToString());
                                    break;
                            }
                        }
                    }

                    string UpdateSqlStr = "";
                    if (UpdateKtvSong)
                    {
                        try
                        {
                            UpdateSqlStr = "select * into ktv_Song_temp from ktv_Song";
                            using (OleDbCommand cmd = new OleDbCommand(UpdateSqlStr, conn))
                            {
                                cmd.ExecuteNonQuery();
                                cmd.Parameters.Clear();
                            }

                            UpdateSqlStr = "delete * from ktv_Song";
                            using (OleDbCommand cmd = new OleDbCommand(UpdateSqlStr, conn))
                            {
                                cmd.ExecuteNonQuery();
                                cmd.Parameters.Clear();
                            }

                            List<string> cmdstrlist = new List<string>()
                            {
                                "alter table ktv_Song alter column Song_SongName TEXT(80) WITH COMPRESSION",
                                "alter table ktv_Song alter column Song_Singer TEXT(60) WITH COMPRESSION",
                                "alter table ktv_Song alter column Song_Spell TEXT(80) WITH COMPRESSION",
                                "alter table ktv_Song alter column Song_FileName TEXT(255) WITH COMPRESSION",
                                "alter table ktv_Song alter column Song_SpellNum TEXT(80) WITH COMPRESSION",
                                "alter table ktv_Song alter column Song_PenStyle TEXT(80) WITH COMPRESSION"
                            };

                            foreach (string cmdstr in cmdstrlist)
                            {
                                using (OleDbCommand cmd = new OleDbCommand(cmdstr, conn))
                                {
                                    cmd.ExecuteNonQuery();
                                    cmd.Parameters.Clear();
                                }
                            }
                            cmdstrlist.Clear();
                            cmdstrlist = null;

                            UpdateSqlStr = "insert into ktv_Song select * from ktv_Song_temp";
                            using (OleDbCommand cmd = new OleDbCommand(UpdateSqlStr, conn))
                            {
                                cmd.ExecuteNonQuery();
                                cmd.Parameters.Clear();
                            }

                            UpdateSqlStr = "drop table ktv_Song_temp";
                            using (OleDbCommand cmd = new OleDbCommand(UpdateSqlStr, conn))
                            {
                                cmd.ExecuteNonQuery();
                                cmd.Parameters.Clear();
                            }
                        }
                        catch
                        {
                            UpdateError = true;
                            this.BeginInvoke((Action)delegate ()
                            {
                                SongMaintenance_DBVerTooltip_Label.Text = "更新歌曲資料表失敗,已還原為原本的資料庫檔案。";
                            });
                        }
                    }

                    if (UpdateKtvSinger)
                    {
                        List<string> cmdstrlist = new List<string>()
                        {
                            "alter table ktv_Singer alter column Singer_Name TEXT(60) WITH COMPRESSION",
                            "alter table ktv_Singer alter column Singer_Spell TEXT(60) WITH COMPRESSION",
                            "alter table ktv_Singer alter column Singer_SpellNum TEXT(60) WITH COMPRESSION",
                            "alter table ktv_Singer alter column Singer_PenStyle TEXT(60) WITH COMPRESSION"
                        };

                        try
                        {
                            foreach (string cmdstr in cmdstrlist)
                            {
                                using (OleDbCommand cmd = new OleDbCommand(cmdstr, conn))
                                {
                                    cmd.ExecuteNonQuery();
                                    cmd.Parameters.Clear();
                                }
                            }
                            cmdstrlist.Clear();
                            cmdstrlist = null;
                        }
                        catch
                        {
                            UpdateError = true;
                            this.BeginInvoke((Action)delegate ()
                            {
                                SongMaintenance_DBVerTooltip_Label.Text = "更新歌手資料表失敗,已還原為原本的資料庫檔案。";
                            });

                        }
                    }

                    if (UpdatePhonetics)
                    {
                        using (OleDbCommand cmd = new OleDbCommand("alter table ktv_Phonetics alter column PenStyle TEXT(40) WITH COMPRESSION", conn))
                        {
                            try
                            {
                                cmd.ExecuteNonQuery();
                                cmd.Parameters.Clear();
                            }
                            catch
                            {
                                UpdateError = true;
                                this.BeginInvoke((Action)delegate ()
                                {
                                    SongMaintenance_DBVerTooltip_Label.Text = "更新拼音資料表失敗,已還原為原本的資料庫檔案。";
                                });
                            }
                        }
                    }

                    if (UpdateLangauage)
                    {
                        using (OleDbCommand cmd = new OleDbCommand("alter table ktv_Langauage add column Langauage_KeyWord TEXT(255) WITH COMPRESSION", conn))
                        {
                            try
                            {
                                cmd.ExecuteNonQuery();
                                cmd.Parameters.Clear();
                            }
                            catch
                            {
                                UpdateError = true;
                                this.BeginInvoke((Action)delegate ()
                                {
                                    SongMaintenance_DBVerTooltip_Label.Text = "更新語系資料表失敗,已還原為原本的資料庫檔案。";
                                });
                            }
                        }
                    }

                    if (UpdateFavorite)
                    {
                        List<string> cmdstrlist = new List<string>()
                        {
                            "alter table ktv_User alter column User_Id TEXT(12) WITH COMPRESSION",
                            "alter table ktv_Favorite alter column User_Id TEXT(12) WITH COMPRESSION",
                        };

                        try
                        {
                            foreach (string cmdstr in cmdstrlist)
                            {
                                using (OleDbCommand cmd = new OleDbCommand(cmdstr, conn))
                                {
                                    cmd.ExecuteNonQuery();
                                    cmd.Parameters.Clear();
                                }
                            }
                            cmdstrlist.Clear();
                            cmdstrlist = null;
                        }
                        catch
                        {
                            UpdateError = true;
                            this.BeginInvoke((Action)delegate ()
                            {
                                SongMaintenance_DBVerTooltip_Label.Text = "更新我的最愛資料表失敗,已還原為原本的資料庫檔案。";
                            });

                        }
                    }

                    if (AddSongReplayGainColumn)
                    {
                        using (OleDbCommand cmd = new OleDbCommand("alter table ktv_Song add column Song_ReplayGain DOUBLE", conn))
                        {
                            try
                            {
                                cmd.ExecuteNonQuery();
                                cmd.Parameters.Clear();
                            }
                            catch
                            {
                                UpdateError = true;
                                this.BeginInvoke((Action)delegate ()
                                {
                                    SongMaintenance_DBVerTooltip_Label.Text = "加入 Song_ReplayGain 欄位失敗,已還原為原本的資料庫檔案。";
                                });
                            }
                        }
                    }

                    if (RemoveSongMeanVolumeColumn)
                    {
                        using (OleDbCommand cmd = new OleDbCommand("alter table ktv_Song drop column Song_MeanVolume", conn))
                        {
                            try
                            {
                                cmd.ExecuteNonQuery();
                                cmd.Parameters.Clear();
                            }
                            catch
                            {
                                UpdateError = true;
                                this.BeginInvoke((Action)delegate ()
                                {
                                    SongMaintenance_DBVerTooltip_Label.Text = "移除 Song_MeanVolume 欄位失敗,已還原為原本的資料庫檔案。";
                                });
                            }
                        }
                    }

                    if (RemoveGodLiuColumn)
                    {
                        List<string> haveindexlist = new List<string>();
                        using (DataTable dt = conn.GetSchema("Indexes"))
                        {
                            foreach (DataRow row in dt.Rows)
                            {
                                if (haveindexlist.IndexOf(row["COLUMN_NAME"].ToString()) < 0) haveindexlist.Add(row["COLUMN_NAME"].ToString());
                            }
                        }

                        string cmdstr = string.Empty;
                        string removeindex = string.Empty;
                        foreach (string GodLiuColumn in GodLiuColumnlist)
                        {
                            switch (GodLiuColumn)
                            {
                                case "Song_SongNameFuzzy":
                                    cmdstr = "alter table ktv_Song drop column Song_SongNameFuzzy";
                                    break;
                                case "Song_SingerFuzzy":
                                    cmdstr = "alter table ktv_Song drop column Song_SingerFuzzy";
                                    break;
                                case "Song_FuzzyVer":
                                    cmdstr = "alter table ktv_Song drop column Song_FuzzyVer";
                                    break;
                                case "DLspace":
                                    cmdstr = "alter table ktv_Song drop column DLspace";
                                    break;
                                case "Epreplacedwd":
                                    cmdstr = "alter table ktv_Song drop column Epreplacedwd";
                                    break;
                                case "imgpath":
                                    cmdstr = "alter table ktv_Song drop column imgpath";
                                    break;
                                case "cashboxsongid":
                                    removeindex = "drop index cashboxsongid on ktv_Song";
                                    cmdstr = "alter table ktv_Song drop column cashboxsongid";
                                    break;
                                case "cashboxdat":
                                    cmdstr = "alter table ktv_Song drop column cashboxdat";
                                    break;
                                case "holidaysongid":
                                    removeindex = "drop index holidaysongid on ktv_Song";
                                    cmdstr = "alter table ktv_Song drop column holidaysongid";
                                    break;
                            }

                            if (GodLiuColumn == "cashboxsongid" || GodLiuColumn == "holidaysongid")
                            {
                                if (haveindexlist.IndexOf(GodLiuColumn) > 0)
                                {
                                    using (OleDbCommand cmd = new OleDbCommand(removeindex, conn))
                                    {
                                        try
                                        {
                                            cmd.ExecuteNonQuery();
                                            cmd.Parameters.Clear();
                                        }
                                        catch
                                        {
                                            UpdateError = true;
                                            this.BeginInvoke((Action)delegate ()
                                            {
                                                SongMaintenance_DBVerTooltip_Label.Text = "刪除 GodLiu 相關欄位失敗,已還原為原本的資料庫檔案。";
                                            });
                                        }
                                    }
                                }
                            }

                            using (OleDbCommand cmd = new OleDbCommand(cmdstr, conn))
                            {
                                try
                                {
                                    cmd.ExecuteNonQuery();
                                    cmd.Parameters.Clear();
                                }
                                catch
                                {
                                    UpdateError = true;
                                    this.BeginInvoke((Action)delegate ()
                                    {
                                        SongMaintenance_DBVerTooltip_Label.Text = "刪除 GodLiu 相關欄位失敗,已還原為原本的資料庫檔案。";
                                    });
                                }
                            }
                        }
                    }

                    string SqlStr = "select * from ktv_Swan";
                    using (DataTable dt = CommonFunc.GetOleDbDataTable(Global.CrazyktvDatabaseFile, SqlStr, ""))
                    {
                        if (dt.Rows.Count > 0)
                        {
                            if (Convert.ToString(dt.Rows[3][1]) == "合唱歌曲")
                            {
                                using (OleDbCommand cmd = new OleDbCommand("update ktv_Swan set Swan_Name = @SwanName where Swan_Id = @SwanId", conn))
                                {
                                    cmd.Parameters.AddWithValue("@SwanName", "合唱");
                                    cmd.Parameters.AddWithValue("@SwanId", "3");
                                    try
                                    {
                                        cmd.ExecuteNonQuery();
                                        cmd.Parameters.Clear();
                                    }
                                    catch
                                    {
                                        UpdateError = true;
                                        this.BeginInvoke((Action)delegate ()
                                        {
                                            SongMaintenance_DBVerTooltip_Label.Text = "變更歌手類別資料失敗,已還原為原本的資料庫檔案。";
                                        });
                                    }
                                }
                            }
                        }
                    }
                }

                if (UpdateError)
                {
                    File.Copy(SongDBBackupFile, Global.CrazyktvDatabaseFile, true);
                    Global.DatabaseUpdateFinished = true;
                }
                else
                {
                    CommonFunc.SaveConfigXmlFile(Global.SongMgrCfgFile, "CrazyktvSongDBVer", Global.CrazyktvSongDBVer);

                    string VersionQuerySqlStr = "select * from ktv_Version";
                    using (DataTable dt = CommonFunc.GetOleDbDataTable(Global.CrazyktvSongMgrDatabaseFile, VersionQuerySqlStr, ""))
                    {
                        if (dt.Rows.Count > 0)
                        {
                            foreach (DataRow row in dt.Rows)
                            {
                                Global.CashboxUpdDate = DateTime.Parse(row["CashboxUpdDate"].ToString());
                            }
                        }
                    }

                    this.BeginInvoke((Action)delegate ()
                    {
                        Global.TimerEndTime = DateTime.Now;

                        SongMaintenance_DBVer1Value_Label.Text = Global.CrazyktvSongDBVer + " 版";
                        Cashbox_UpdDateValue_Label.Text = (CultureInfo.CurrentCulture.Name == "zh-TW") ? Global.CashboxUpdDate.ToLongDateString() : Global.CashboxUpdDate.ToShortDateString();

                        SongMaintenance_DBVerTooltip_Label.Text = "";
                        SongMaintenance_Tooltip_Label.Text = "已完成歌庫版本更新,共花費 " + (long)(Global.TimerEndTime - Global.TimerStartTime).TotalSeconds + " 秒完成。";
                    });
                    SongDBUpdate_UpdateFinish();
                }
            }
        }

19 Source : SongMonitor.cs
with GNU General Public License v2.0
from CrazyKTV

private void SongMonitor_CheckCurSong()
        {
            if (!Global.CrazyktvDatabaseStatus) return;

            if (Global.SongMgrSongAddMode != "4")
            {
                if (SongMgrCfg_TabControl.TabPages.IndexOf(SongMgrCfg_MonitorFolders_TabPage) >= 0)
                {
                    SongMgrCfg_MonitorFolders_TabPage.Hide();
                    SongMgrCfg_TabControl.TabPages.Remove(SongMgrCfg_MonitorFolders_TabPage);
                }
            }

            if (Global.SongMgrSongAddMode == "4" && Global.SongMgrEnableMonitorFolders == "True")
            {
                Global.TimerStartTime = DateTime.Now;
                DateTime TimerStartTime = DateTime.Now;
                Global.TotalList = new List<int>() { 0, 0, 0, 0, 0 };
                Global.MTotalList = new List<int>() { 0, 0, 0, 0 };
                Common_SwitchSetUI(false);

                var tasks = new List<Task>()
                {
                    Task.Factory.StartNew(() => SongMonitor_CheckCurSongTask())
                };

                Task.Factory.ContinueWhenAll(tasks.ToArray(), EndTask =>
                {
                    DateTime TimerEndTime = DateTime.Now;
                    this.BeginInvoke((Action)delegate()
                    {
                        SongQuery_QueryStatus_Label.Text = "總共加入 " + Global.TotalList[0] + " 首歌曲,忽略重複歌曲 " + Global.TotalList[1] + " 首,移除 " + Global.MTotalList[0] + " 首,共花費 " + (long)(TimerEndTime - TimerStartTime).TotalSeconds + " 秒完成監視。";
                        SongAdd_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
                        SongMgrCfg_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;

                        Common_SwitchSetUI(true);
                    });
                });
            }
        }

19 Source : SongMonitor.cs
with GNU General Public License v2.0
from CrazyKTV

private void SongMonitorTimer_Tick(object sender, EventArgs e)
        {
            if (Global.SongMonitorDeletedList.Count > 0 || Global.SongMonitorCreatedList.Count > 0)
            {
                Global.SongMonitorETime = DateTime.Now;
                if ((long)(Global.SongMonitorETime - Global.SongMonitorSTime).TotalSeconds >= 3)
                {
                    Global.SongMonitorTimer.Stop();
                    Global.TimerStartTime = DateTime.Now;
                    DateTime TimerStartTime = DateTime.Now;
                    Global.TotalList = new List<int>() { 0, 0, 0, 0, 0 };
                    Global.MTotalList = new List<int>() { 0, 0, 0, 0 };
                    Common_SwitchSetUI(false);

                    SongQuery_QueryStatus_Label.Text = "正在同步檔案及資料庫,請稍待...";
                    SongAdd_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
                    SongMgrCfg_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;

                    var tasks = new List<Task>()
                    {
                        Task.Factory.StartNew(() => SongMonitor_UpdateSongDBTask())
                    };

                    Task.Factory.ContinueWhenAll(tasks.ToArray(), EndTask =>
                    {
                        DateTime TimerEndTime = DateTime.Now;
                        this.BeginInvoke((Action)delegate()
                        {
                            SongQuery_QueryStatus_Label.Text = "總共加入 " + Global.TotalList[0] + " 首歌曲,忽略重複歌曲 " + Global.TotalList[1] + " 首,移除 " + Global.MTotalList[0] + " 首,共花費 " + (long)(TimerEndTime - TimerStartTime).TotalSeconds + " 秒完成監視。";
                            SongAdd_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
                            SongMgrCfg_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;

                            if (Global.SongMonitorDT != null)
                            {
                                Global.SongMonitorDT.Dispose();
                                Global.SongMonitorDT = null;
                            }

                            Global.SongMonitorDT = new DataTable();
                            string SongQuerySqlStr = "select Song_Id, Song_Lang, Song_FileName, Song_Path from ktv_Song order by Song_Id";
                            Global.SongMonitorDT = CommonFunc.GetOleDbDataTable(Global.CrazyktvDatabaseFile, SongQuerySqlStr, "");

                            Common_SwitchSetUI(true);
                            Global.SongMonitorTimer.Start();
                        });
                    });
                }
            }
        }

19 Source : SongMonitor.cs
with GNU General Public License v2.0
from CrazyKTV

private void SongMonitor_UpdateSongDBTask()
        {
            List<int> CountList = new List<int>() { Global.SongMonitorDeletedList.Count, Global.SongMonitorCreatedList.Count };
            if (Global.SongMonitorDeletedList.Count > 0)
            {
                OleDbConnection conn = CommonFunc.OleDbOpenConn(Global.CrazyktvDatabaseFile, "");
                OleDbCommand cmd = new OleDbCommand();
                string SongRemoveSqlStr = "delete from ktv_Song where Song_Id = @SongId";
                cmd = new OleDbCommand(SongRemoveSqlStr, conn);

                foreach (string str in Global.SongMonitorDeletedList)
                {
                    List<string> list = new List<string>(str.Split('|'));
                    cmd.Parameters.AddWithValue("@SongId", list[0]);
                    cmd.ExecuteNonQuery();
                    cmd.Parameters.Clear();

                    Global.MTotalList[0]++;

                    this.BeginInvoke((Action)delegate()
                    {
                        SongQuery_QueryStatus_Label.Text = "正在移除第 " + Global.MTotalList[0] + " 首檔案不存在的歌曲資料,請稍待...";
                        SongAdd_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
                        SongMgrCfg_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
                    });

                    Global.SongLogDT.Rows.Add(Global.SongLogDT.NewRow());
                    Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][0] = "【歌庫監視】檔案已刪除: " + list[0] + "|" + list[1];
                    Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][1] = Global.SongLogDT.Rows.Count;
                }
                Global.SongMonitorDeletedList.Clear();
                conn.Close();
            }

            if (Global.SongMonitorCreatedList.Count > 0)
            {
                SongAdd_SongreplacedysisTask(Global.SongMonitorCreatedList);
                while (!Songreplacedysis.SongreplacedysisCompleted)
                {
                    Thread.Sleep(500);
                }

                if (!Songreplacedysis.SongreplacedysisError)
                {
                    SongAdd_SongAddTask();
                }

                this.BeginInvoke((Action)delegate()
                {
                    SongQuery_QueryStatus_Label.Text = "正在將變更的歌曲資料寫入操作記錄,請稍待...";
                    SongAdd_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
                    SongMgrCfg_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
                });

                foreach (string filepath in Global.SongMonitorCreatedList)
                {
                    Global.SongLogDT.Rows.Add(Global.SongLogDT.NewRow());
                    Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][0] = "【歌庫監視】偵測到新檔: " + filepath;
                    Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][1] = Global.SongLogDT.Rows.Count;
                }
                Global.SongMonitorCreatedList.Clear();
            }

            if (CountList[0] > 0 && CountList[1] == 0)
            {
                this.BeginInvoke((Action)delegate()
                {
                    Common_QueryAddSong(100);
                });

                Task.Factory.StartNew(() => Common_GetSongStatisticsTask());
                Task.Factory.StartNew(() => Common_GetSingerStatisticsTask());
                Task.Factory.StartNew(() => CommonFunc.GetRemainingSongIdCount((Global.SongMgrMaxDigitCode == "1") ? 5 : 6));
            }
        }

19 Source : SongMonitor.cs
with GNU General Public License v2.0
from CrazyKTV

private void SongMonitor_CheckCurSongTask()
        {
            SpinWait.SpinUntil(() => Global.InitializeSongData == true);
            this.BeginInvoke((Action)delegate()
            {
                SongQuery_QueryStatus_Label.Text = "正在檢查歌曲資料庫,請稍待...";
                SongAdd_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
                SongMgrCfg_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
            });

            DataTable dt = new DataTable();
            string SongQuerySqlStr = "select Song_Id, Song_Lang, Song_FileName, Song_Path from ktv_Song order by Song_Id";
            dt = CommonFunc.GetOleDbDataTable(Global.CrazyktvDatabaseFile, SongQuerySqlStr, "");

            List<string> RemoveSongIdList = new List<string>();
            List<string> FileList = new List<string>();

            Parallel.ForEach(Global.CrazyktvSongLangList, (langstr, loopState) =>
            {
                var query = from row in dt.AsEnumerable()
                            where row.Field<string>("Song_Lang").Equals(langstr)
                            select row;

                if (query.Count<DataRow>() > 0)
                {
                    foreach (DataRow row in query)
                    {
                        if (!File.Exists(Path.Combine(row.Field<string>("Song_Path"), row.Field<string>("Song_FileName"))))
                        {
                            lock (LockThis)
                            {
                                RemoveSongIdList.Add(row["Song_Id"].ToString() + "|" + Path.Combine(row.Field<string>("Song_Path"), row.Field<string>("Song_FileName")));
                            }
                        }
                        else
                        {
                            lock (LockThis)
                            {
                                FileList.Add(Path.Combine(row.Field<string>("Song_Path"), row.Field<string>("Song_FileName")));
                            }
                        }
                    }
                }
            });
            dt.Dispose();
            dt = null;

            OleDbConnection conn = CommonFunc.OleDbOpenConn(Global.CrazyktvDatabaseFile, "");
            OleDbCommand cmd = new OleDbCommand();
            string SongRemoveSqlStr = "delete from ktv_Song where Song_Id = @SongId";
            cmd = new OleDbCommand(SongRemoveSqlStr, conn);

            if (RemoveSongIdList.Count > 0)
            {
                foreach (string str in RemoveSongIdList)
                {
                    List<string> list = new List<string>(str.Split('|'));
                    cmd.Parameters.AddWithValue("@SongId", list[0]);
                    cmd.ExecuteNonQuery();
                    cmd.Parameters.Clear();

                    Global.MTotalList[0]++;

                    this.BeginInvoke((Action)delegate()
                    {
                        SongQuery_QueryStatus_Label.Text = "正在移除第 " + Global.MTotalList[0] + " 首檔案不存在的歌曲資料,請稍待...";
                        SongAdd_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
                        SongMgrCfg_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
                    });

                    Global.SongLogDT.Rows.Add(Global.SongLogDT.NewRow());
                    Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][0] = "【歌庫監視】檔案不存在: " + list[0] + "|" + list[1];
                    Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][1] = Global.SongLogDT.Rows.Count;
                }
            }
            conn.Close();

            this.BeginInvoke((Action)delegate()
            {
                SongQuery_QueryStatus_Label.Text = "正在檢查歌庫監視目錄,請稍待...";
                SongAdd_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
                SongMgrCfg_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
            });

            List<string> NewFileList = new List<string>();
            List<string> SupportFormat = new List<string>(Global.SongMgrSupportFormat.Split(';'));

            bool EnableSongMonitor = false;
            Parallel.ForEach(Global.SongMgrMonitorFoldersList, (mpath, loopState) =>
            {
                if (mpath != "")
                {
                    EnableSongMonitor = true;
                    DirectoryInfo dir = new DirectoryInfo(mpath);
                    FileInfo[] Files = dir.GetFiles("*", SearchOption.AllDirectories).Where(p => SupportFormat.Contains(p.Extension.ToLower())).ToArray();
                    foreach (FileInfo f in Files)
                    {
                        if (FileList.IndexOf(f.FullName) < 0)
                        {
                            lock(LockThis)
                            {
                                NewFileList.Add(f.FullName);

                                Global.SongLogDT.Rows.Add(Global.SongLogDT.NewRow());
                                Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][0] = "【歌庫監視】偵測到新檔: " + f.FullName;
                                Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][1] = Global.SongLogDT.Rows.Count;
                            }
                        }
                    }

                    if (!Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].EnableRaisingEvents)
                    {
                        Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].Path = mpath;
                        Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].IncludeSubdirectories = true;
                        Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].Filter = "*.*";
                        Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].InternalBufferSize = 8192;
                        Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].NotifyFilter = NotifyFilters.FileName | NotifyFilters.DirectoryName;
                        Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].Created += new FileSystemEventHandler(WatcherOnCreated);
                        Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].Deleted += new FileSystemEventHandler(WatcherOnDeleted);
                        Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].Renamed += new RenamedEventHandler(WatcherOnRenamed);
                        Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].EnableRaisingEvents = true;
                    }
                }
            });

            if (NewFileList.Count > 0)
            {
                SongAdd_SongreplacedysisTask(NewFileList);
                while (!Songreplacedysis.SongreplacedysisCompleted)
                {
                    Thread.Sleep(500);
                }

                if (!Songreplacedysis.SongreplacedysisError)
                {
                    SongAdd_SongAddTask();
                }
            }
            else
            {
                if (RemoveSongIdList.Count > 0)
                {
                    this.BeginInvoke((Action)delegate()
                    {
                        Common_QueryAddSong(100);
                    });

                    Task.Factory.StartNew(() => Common_GetSongStatisticsTask());
                    Task.Factory.StartNew(() => Common_GetSingerStatisticsTask());
                    Task.Factory.StartNew(() => CommonFunc.GetRemainingSongIdCount((Global.SongMgrMaxDigitCode == "1") ? 5 : 6));
                }
            }

            if (EnableSongMonitor)
            {
                Global.SongMonitorDT = new DataTable();
                SongQuerySqlStr = "select Song_Id, Song_Lang, Song_FileName, Song_Path from ktv_Song order by Song_Id";
                Global.SongMonitorDT = CommonFunc.GetOleDbDataTable(Global.CrazyktvDatabaseFile, SongQuerySqlStr, "");

                this.BeginInvoke((Action)delegate()
                {
                    if (!Global.SongMonitorTimer.Enabled)
                    {
                        Global.SongMonitorTimer.Tick += new EventHandler(SongMonitorTimer_Tick);
                        Global.SongMonitorTimer.Interval = 1000;
                        Global.SongMonitorTimer.Start();
                    }
                });
            }
            RemoveSongIdList.Clear();
            FileList.Clear();
            NewFileList.Clear();
        }

19 Source : SongDBUpdate.cs
with GNU General Public License v2.0
from CrazyKTV

private void SongDBUpdate_UpdateFinish()
        {
            List<bool> list = GetCrazyktvDatabaseStatus();
            bool SongMgrDestFolder = list[3];
            list.Clear();
            list = null;

            if (Global.CrazyktvDatabaseStatus)
            {
                DataTable dt = new DataTable();
                string SongQuerySqlStr = "select Song_Id from ktv_Song";
                dt = CommonFunc.GetOleDbDataTable(Global.CrazyktvDatabaseFile, SongQuerySqlStr, "");
                if (dt.Rows.Count > 0)
                {
                    var d5code = from row in dt.AsEnumerable()
                                 where row.Field<string>("Song_Id").Length == 5
                                 select row;

                    var d6code = from row in dt.AsEnumerable()
                                 where row.Field<string>("Song_Id").Length == 6
                                 select row;

                    int MaxDigitCode;
                    if (d5code.Count<DataRow>() > d6code.Count<DataRow>()) { MaxDigitCode = 5; } else { MaxDigitCode = 6; }

                    switch (MaxDigitCode)
                    {
                        case 5:
                            ControlExtensions.BeginInvokeIfRequired(SongMgrCfg_MaxDigitCode_ComboBox, cb => cb.Enabled = false);
                            if (Global.SongMgrMaxDigitCode != "1")
                            {
                                ControlExtensions.BeginInvokeIfRequired(SongMgrCfg_MaxDigitCode_ComboBox, cb => cb.SelectedValue = 1);
                                CommonFunc.SaveConfigXmlFile(Global.SongMgrCfgFile, "SongMgrMaxDigitCode", Global.SongMgrMaxDigitCode);
                                CommonFunc.SaveConfigXmlFile(Global.SongMgrCfgFile, "SongMgrLangCode", Global.SongMgrLangCode);
                            }
                            break;
                        case 6:
                            ControlExtensions.BeginInvokeIfRequired(SongMgrCfg_MaxDigitCode_ComboBox, cb => cb.Enabled = false);
                            if (Global.SongMgrMaxDigitCode != "2")
                            {
                                ControlExtensions.BeginInvokeIfRequired(SongMgrCfg_MaxDigitCode_ComboBox, cb => cb.SelectedValue = 2);
                                CommonFunc.SaveConfigXmlFile(Global.SongMgrCfgFile, "SongMgrMaxDigitCode", Global.SongMgrMaxDigitCode);
                                CommonFunc.SaveConfigXmlFile(Global.SongMgrCfgFile, "SongMgrLangCode", Global.SongMgrLangCode);
                            }
                            break;
                    }

                    var query = from row in dt.AsEnumerable()
                                where row.Field<string>("Song_Id").Length != MaxDigitCode
                                select row;

                    if (query.Count<DataRow>() > 0)
                    {
                        Global.SongMgrDBVerErrorUIStatus = false;
                        ControlExtensions.BeginInvokeIfRequired(SongMaintenance_CodeConvTo6_Button, btn => btn.Enabled = false);
                        ControlExtensions.BeginInvokeIfRequired(SongMaintenance_CodeCorrect_Button, btn => btn.Enabled = true);
                        Global.CrazyktvDatabaseMaxDigitCode = false;
                        Global.CrazyktvDatabaseStatus = false;
                    }
                    else
                    {
                        if (Global.SongMgrSongAddMode == "3" || Global.SongMgrSongAddMode == "4")
                        {
                            Global.SongMgrDBVerErrorUIStatus = true;

                        }
                        else
                        {
                            if (SongMgrDestFolder) { Global.SongMgrDBVerErrorUIStatus = true; } else { Global.SongMgrDBVerErrorUIStatus = false; }
                        }

                        switch (Global.SongMgrMaxDigitCode)
                        {
                            case "1":
                                ControlExtensions.BeginInvokeIfRequired(SongMaintenance_CodeConvTo6_Button, btn => btn.Enabled = true);
                                break;
                            case "2":
                                ControlExtensions.BeginInvokeIfRequired(SongMaintenance_CodeConvTo6_Button, btn => btn.Enabled = false);
                                break;
                        }
                        ControlExtensions.BeginInvokeIfRequired(SongMaintenance_CodeCorrect_Button, btn => btn.Enabled = false);
                        Global.CrazyktvDatabaseMaxDigitCode = true;
                    }
                }
                else // 空白資料庫
                {
                    if (Global.SongMgrSongAddMode == "3" || Global.SongMgrSongAddMode == "4")
                    {
                        Global.SongMgrDBVerErrorUIStatus = true;
                    }
                    else
                    {
                        if (SongMgrDestFolder) { Global.SongMgrDBVerErrorUIStatus = true; } else { Global.SongMgrDBVerErrorUIStatus = false; }
                    }

                    ControlExtensions.BeginInvokeIfRequired(SongMaintenance_CodeConvTo6_Button, btn => btn.Enabled = false);
                    ControlExtensions.BeginInvokeIfRequired(SongMaintenance_CodeCorrect_Button, btn => btn.Enabled = false);
                    Global.CrazyktvDatabaseMaxDigitCode = true;
                }
                dt.Dispose();
                dt = null;
            }

            if (Global.CrazyktvDatabaseStatus)
            {
                // 檢查是否有自訂語系
                Common_CheckSongLang();

                // 統計歌曲數量
                Task.Factory.StartNew(() => Common_GetSongStatisticsTask());

                // 統計歌手數量
                Task.Factory.StartNew(() => Common_GetSingerStatisticsTask());

                // 檢查備份移除歌曲是否要刪除
                Task.Factory.StartNew(() => Common_CheckBackupRemoveSongTask());

                // 取得可用歌曲編號
                Task.Factory.StartNew(() => CommonFunc.GetRemainingSongIdCount((Global.SongMgrMaxDigitCode == "1") ? 5 : 6));

                this.BeginInvoke((Action)delegate()
                {
                    // 載入我的最愛清單
                    SongQuery_GetFavoriteUserList();

                    // 歌庫設定 - 載入下拉選單清單及設定
                    SongMgrCfg_SetLangLB();

                    // 歌庫維護 - 載入下拉選單清單及設定
                    SongMaintenance_GetFavoriteUserList();
                    SongMaintenance_SetCustomLangControl();
                });
            }
            Global.DatabaseUpdateFinished = true;
        }

19 Source : MainForm.cs
with MIT License
from CreateBrowser

public void InvokeIfNeeded(Action action) {
			if (this.InvokeRequired) {
				this.BeginInvoke(action);
			} else {
				action.Invoke();
			}
		}

19 Source : ExplorerBrowserTestForm.cs
with MIT License
from dahall

private void explorerBrowser_ItemsEnumerated(object sender, EventArgs e)
		{
			DebugEnterFunc();
			// This event is BeginInvoked to decouple the ExplorerBrowser UI from this UI
			BeginInvoke(new MethodInvoker(delegate ()
			{
				eventHistoryTextBox.Text =
					eventHistoryTextBox.Text +
					"View enumeration complete.\n";
			}));

			selectionChanged.Set();
			itemsChanged.Set();
		}

19 Source : ExplorerBrowserTestForm.cs
with MIT License
from dahall

private void explorerBrowser_Navigated(object sender, Vanara.Windows.Forms.ExplorerBrowser.NavigatedEventArgs args)
		{
			DebugEnterFunc();
			// This event is BeginInvoked to decouple the ExplorerBrowser UI from this UI
			BeginInvoke(new MethodInvoker(delegate ()
			{
				// update event history text box
				var location = (args.NewLocation == null) ? "(unknown)" : args.NewLocation.Name;
				eventHistoryTextBox.Text =
					eventHistoryTextBox.Text +
					"Navigation completed. New Location = " + location + "\n";
			}));
		}

19 Source : ExplorerBrowserTestForm.cs
with MIT License
from dahall

private void explorerBrowser_Navigating(object sender, Vanara.Windows.Forms.ExplorerBrowser.NavigatingEventArgs args)
		{
			DebugEnterFunc();
			// fail navigation if check selected (this must be synchronous)
			args.Cancel = failNavigationCheckBox.Checked;

			// This portion is BeginInvoked to decouple the ExplorerBrowser UI from this UI
			BeginInvoke(new MethodInvoker(delegate ()
			{
				// update event history text box
				var message = "";
				var location = (args.PendingLocation == null) ? "(unknown)" : args.PendingLocation.Name;
				if (args.Cancel)
				{
					message = "Navigation Failing. Pending Location = " + location;
				}
				else
				{
					message = "Navigation Pending. Pending Location = " + location;
				}
				eventHistoryTextBox.Text =
					eventHistoryTextBox.Text + message + "\n";
			}));
		}

19 Source : ExplorerBrowserTestForm.cs
with MIT License
from dahall

private void explorerBrowser_NavigationFailed(object sender, Vanara.Windows.Forms.ExplorerBrowser.NavigationFailedEventArgs args)
		{
			DebugEnterFunc();
			// This event is BeginInvoked to decouple the ExplorerBrowser UI from this UI
			BeginInvoke(new MethodInvoker(delegate ()
			{
				// update event history text box
				var location = (args.FailedLocation == null) ? "(unknown)" : args.FailedLocation.Name;
				eventHistoryTextBox.Text =
					eventHistoryTextBox.Text +
					"Navigation failed. Failed Location = " + location + "\n";

				if (explorerBrowser.History.CurrentLocationIndex == -1)
					navigationHistoryCombo.Text = "";
				else
					navigationHistoryCombo.SelectedIndex = explorerBrowser.History.CurrentLocationIndex;
			}));
		}

19 Source : ExplorerBrowserTestForm.cs
with MIT License
from dahall

private void NavigationLog_NavigationLogChanged(object sender, Vanara.Windows.Forms.ExplorerBrowser.NavigationLogEventArgs args)
		{
			DebugEnterFunc();
			// This event is BeginInvoked to decouple the ExplorerBrowser UI from this UI
			BeginInvoke(new MethodInvoker(delegate ()
			{
				// calculate button states
				if (args.CanNavigateBackwardChanged)
				{
					backButton.Enabled = explorerBrowser.History.CanNavigateBackward;
				}
				if (args.CanNavigateForwardChanged)
				{
					forwardButton.Enabled = explorerBrowser.History.CanNavigateForward;
				}

				// update history combo box
				if (args.LocationsChanged)
				{
					navigationHistoryCombo.Items.Clear();
					foreach (var shobj in explorerBrowser.History.Locations)
					{
						navigationHistoryCombo.Items.Add(shobj.Name);
					}
				}
				if (explorerBrowser.History.CurrentLocationIndex == -1)
					navigationHistoryCombo.Text = "";
				else
					navigationHistoryCombo.SelectedIndex = explorerBrowser.History.CurrentLocationIndex;
			}));
		}

19 Source : ShellBrowser.cs
with MIT License
from dahall

public HRESULT BrowseObject(IntPtr pidl, SBSP wFlags)
		{
			ShellItem shellObject = null;

			// The given PIDL equals Desktop, so ignore the other flags
			if (ShellFolder.Desktop.PIDL.Equals(pidl))
			{
				shellObject = new ShellItem(ShellFolder.Desktop.PIDL);
			}

			// SBSP_NAVIGATEBACK stands for the last item in the navigation history list (and ignores the pidl)
			else if (wFlags.HasFlag(SBSP.SBSP_NAVIGATEBACK))
			{
				if (History.CanSeekBackward)
					shellObject = History.SeekBackward();
				else
					return HRESULT.STG_E_PATHNOTFOUND;
			}

			// SBSP_NAVIGATEFORWARD stands for the next item in the navigation history list (and ignores the pidl)
			else if (wFlags.HasFlag(SBSP.SBSP_NAVIGATEFORWARD))
			{
				if (History.CanSeekForward)
					shellObject = History.SeekForward();
				else
					return HRESULT.STG_E_PATHNOTFOUND;
			}

			// SBSP_RELATIVE stands for a pidl relative to the current folder
			else if (wFlags.HasFlag(SBSP.SBSP_RELATIVE))
			{
				ShellItem currentObject = History.Current;

				PIDL targetObject = PIDLUtil.ILCombine((IntPtr)currentObject.PIDL, pidl);

				shellObject = new ShellItem(targetObject);
			}

			// SBSP_PARENT stands for the parent folder (and ignores the pidl)
			else if (wFlags.HasFlag(SBSP.SBSP_PARENT))
			{
				ShellItem currentObject = History.Current;
				ShellFolder parentObject = currentObject.Parent;

				if ((parentObject is not null) && parentObject.PIDL.IsParentOf(currentObject.PIDL))
					shellObject = parentObject;
				else
					return HRESULT.STG_E_PATHNOTFOUND;
			}

			// SBSP_ABSOLUTE as the remaining option stands for an absolute pidl that is given
			else
			{
				// Remember we are not the owner of this pidl, so clone it to have our own copy on the heap.
				shellObject = new ShellItem(new PIDL(pidl, true));
			}

			if (InvokeRequired)
				BeginInvoke((Action)(() => BrowseShellItemInternal(shellObject)));
			else
				BrowseShellItemInternal(shellObject);

			return HRESULT.S_OK;

			#region BrowseShellItemInternal

			void BrowseShellItemInternal(ShellItem shellItem)
			{
				// Save ViewState of current folder
				ViewHandler.GetValidInstance()?.ShellView.SaveViewState();

				if (viewStateStream is not null)
					Marshal.ReleaseComObject(viewStateStream);

				viewStateStreamIdentifier = shellItem.ParsingName;

				var viewHandler = new ShellBrowserViewHandler(this,
					new ShellFolder(shellItem),
					ref folderSettings,
					ref emptyFolderText);

				// Clone the PIDL, to have our own object copy on the heap!
				if (!wFlags.HasFlag(SBSP.SBSP_WRITENOHISTORY))
					History.Add(new PIDL(viewHandler.ShellFolder.PIDL));

				ShellBrowserViewHandler oldViewHandler = ViewHandler;
				ViewHandler = viewHandler;
				oldViewHandler?.UIDeactivate();
				viewHandler.UIActivate();
				oldViewHandler?.DestroyView();

				OnNavigated(viewHandler.ShellFolder);
				OnSelectionChanged();
			}

19 Source : InitialForm.cs
with BSD 3-Clause "New" or "Revised" License
from DannyTheSloth

private void OnLoad(object sender, EventArgs e)
        {
            BeginInvoke(new MethodInvoker(delegate { Hide(); }));
        }

19 Source : FileItemShow.cs
with MIT License
from dathlin

private void DownloadProgressReport(long download, long totle)
        {
            if(IsHandleCreated)
            {
                if(InvokeRequired)
                {
                    BeginInvoke(new Action(() =>
                    {
                        DownloadProgressReport(download, totle);
                    }));
                    return;
                }

                progressBar1.Value = (int)(download * 100 / totle);
            }
        }

19 Source : FormSimplyFileUpload.cs
with MIT License
from dathlin

private void ReportProgress(long current, long count)
        {
            if (InvokeRequired)
            {
                BeginInvoke(new Action(() =>
                {
                    ReportProgress(current, count);
                }));
                return;
            }

            long percent = 0;
            if (count > 0)
            {
                percent = current * 100 / count;
            }

            progressBar1.Value = (int)percent;
            toolStripStatusLabel2.Text = "正在上传文件(" + percent.ToString() + "%)";
        }

19 Source : FormBrowseServer.cs
with GNU Lesser General Public License v3.0
from dathlin

private void M_OpcUaClient_OpcStatusChange1(object sender, OpcUaStatusEventArgs e)
        {
            if (InvokeRequired)
            {
                BeginInvoke(new Action(() =>
                {
                    M_OpcUaClient_OpcStatusChange1(sender, e);
                }));
                return;
            }

            if (e.Error)
            {
                toolStripStatusLabel1.BackColor = Color.Red;
            }
            else
            {
                toolStripStatusLabel1.BackColor = SystemColors.Control;
            }

            toolStripStatusLabel_opc.Text = e.ToString();
        }

19 Source : FlaskTimerCircleForm.cs
with MIT License
from DeadlyCrush

private void Timer1_Tick(object sender, EventArgs e)
        {
            if (!LauncherForm.g_pinLOCK)
            {   
                // Reverse Style
                uint exstyleGet = InteropCommon.GetWindowLong(this.Handle, m_nExStyleNum);
                InteropCommon.SetWindowLong(this.Handle, m_nExStyleNum, exstyleGet & ~(WS_EX_LAYERED | WS_EX_TRANSPARENT));
                Width = 40;
                Height = 40;
            }
            else
            {
                // Set Style : Can't Click (Layered Transparent)
                uint exstyleGet = InteropCommon.GetWindowLong(this.Handle, m_nExStyleNum);
                InteropCommon.SetWindowLong(this.Handle, m_nExStyleNum, exstyleGet | WS_EX_LAYERED | WS_EX_TRANSPARENT);
                Width = 40;
                Height = 40;
            }

            int nPercent = Convert.ToInt32(lnFlaskTimer / lnMaxValue * 100);
            circularProgressBar1.Text = lnFlaskTimer.ToString("N1");
            circularProgressBar1.Value = nPercent; // Convert.ToInt32(lnFlaskTimer);
            circularProgressBar1.Invalidate();

            lnFlaskTimer = lnFlaskTimer - 0.1; // 100ms
            if (lnFlaskTimer <= 0.0)
            {
                timer1.Stop();

                if (circularProgressBar1 != null) circularProgressBar1.Dispose();
                this.BeginInvoke(new MethodInvoker(Close));// Close();
            }
        }

19 Source : FlaskICONTimer.cs
with MIT License
from DeadlyCrush

private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {
                if (!LauncherForm.g_pinLOCK)
                {
                    // Reverse Style
                    uint exstyleGet = InteropCommon.GetWindowLong(this.Handle, m_nExStyleNum);
                    InteropCommon.SetWindowLong(this.Handle, m_nExStyleNum, exstyleGet & ~(WS_EX_LAYERED | WS_EX_TRANSPARENT));
                    Width = 30;
                    Height = 70;
                }
                else
                {
                    // Set Style : Can't Click (Layered Transparent)
                    uint exstyleGet = InteropCommon.GetWindowLong(this.Handle, m_nExStyleNum);
                    InteropCommon.SetWindowLong(this.Handle, m_nExStyleNum, exstyleGet | WS_EX_LAYERED | WS_EX_TRANSPARENT);
                    Width = 30;
                    Height = 70;
                }

                int nPercent = Convert.ToInt32(lnFlaskTimer / lnMaxValue * 100);
                xuiFlatProgressBar1.Text = lnFlaskTimer.ToString("N1");
                xuiFlatProgressBar1.Value = nPercent; // Convert.ToInt32(lnFlaskTimer);
                xuiFlatProgressBar1.Invalidate();

                // Change opacity
                //pictureFlask.BackColor = Color.Transparent;
                //pictureFlask.Image = AdjustAlpha((Bitmap)Properties.Resources._60px_Atziri_s_Promise_inventory_icon, nPercent);

                panelAlpha.Height = 60 - nPercent;

                //DeadlyLog4Net._log.Info(nPercent.ToString());
                lnFlaskTimer = lnFlaskTimer - 0.1; // 100ms
                if (lnFlaskTimer <= 0.0)
                {
                    #region [[[[[ Remove temporary - replacedertion ]]]]]
                    //if (strUseAlertSound == "Y")
                    //    PlayMediaFile(Application.StartupPath + "\\flaskalert.wav"); 
                    #endregion

                    timer1.Stop();
                    xuiFlatProgressBar1.Dispose();
                    this.BeginInvoke(new MethodInvoker(Close));// Close();
                }
            }
            catch (Exception ex)
            {
                DeadlyLog4Net._log.Error($"catch {MethodBase.GetCurrentMethod().Name}", ex); ;
            }
        }

19 Source : SkillTimerForm.cs
with MIT License
from DeadlyCrush

private void Timer1_Tick(object sender, EventArgs e)
        {
            try
            {
                if (!LauncherForm.g_pinLOCK)
                {
                    // Reverse Style
                    uint exstyleGet = InteropCommon.GetWindowLong(this.Handle, m_nExStyleNum);
                    InteropCommon.SetWindowLong(this.Handle, m_nExStyleNum, exstyleGet & ~(WS_EX_LAYERED | WS_EX_TRANSPARENT));
                    Width = 40;
                    Height = 40;
                }
                else
                {
                    // Set Style : Can't Click (Layered Transparent)
                    uint exstyleGet = InteropCommon.GetWindowLong(this.Handle, m_nExStyleNum);
                    InteropCommon.SetWindowLong(this.Handle, m_nExStyleNum, exstyleGet | WS_EX_LAYERED | WS_EX_TRANSPARENT);
                    Width = 40;
                    Height = 40;
                }

                /*using (Graphics gr = circularProgressBar1.CreateGraphics())
                {
                    Font f = new Font(FontFamily.GenericSerif, 10);
                    SizeF len = gr.MeasureString(lnSkillTimer.ToString("N1"), f);
                    Point location = new Point(Convert.ToInt32((circularProgressBar1.Width / 2) - len.Width / 2), 
                                               Convert.ToInt32((circularProgressBar1.Height / 2) - len.Height / 2));
                    gr.DrawString(lnSkillTimer.ToString("N1"), f, Brushes.Red, location);
                }*/

                //
                int nPercent = Convert.ToInt32(lnSkillTimer / lnMaxValue * 100);
                circularProgressBar1.Text = lnSkillTimer.ToString("N1");
                circularProgressBar1.Value = nPercent; // Convert.ToInt32(lnFlaskTimer);
                circularProgressBar1.Invalidate();

                lnSkillTimer = lnSkillTimer - 0.1; // 100ms
                if (lnSkillTimer <= 0.0)
                {
                    /*switch (nSkillNumber)
                    {
                        case 1:
                            ControlForm.frmSkillK1 = null;
                            break;
                        case 2:
                            ControlForm.frmSkillK2 = null;
                            break;
                        case 3:
                            ControlForm.frmSkillK3 = null;
                            break;
                        case 4:
                            ControlForm.frmSkillK4 = null;
                            break;
                        case 5:
                            ControlForm.frmSkillK5 = null;
                            break;
                        default:
                            break;
                    }*/
                    circularProgressBar1.Dispose();
                    circularProgressBar1 = null;
                    //this.Dispose();

                    timer1.Stop();
                    this.BeginInvoke(new MethodInvoker(Close)); // Close();
                }
            }
            catch(Exception ex)
            {
                DeadlyLog4Net._log.Error($"catch {MethodBase.GetCurrentMethod().Name}", ex); ;
            }
        }

19 Source : FrmNodePreviewPanel.cs
with MIT License
from DebugST

protected override void OnLoad(EventArgs e) {
            base.OnLoad(e);
            m_node = (STNode)Activator.CreateInstance(m_type);
            m_node.Left = 20; m_node.Top = 20;
            m_editor.Nodes.Add(m_node);
            m_property.SetNode(m_node);

            m_rect_panel = new Rectangle(0, 0, 402, 202);
            m_rect_handle = new Rectangle(m_ptHandle.X, m_ptHandle.Y, m_nHandleSize, m_nHandleSize);
            m_rect_exclude = new Rectangle(0, m_nHandleSize, m_nHandleSize, this.Height - m_nHandleSize);
            if (m_bRight) {
                this.Left = m_ptHandle.X;
                m_rect_panel.X = m_ptHandle.X + m_nHandleSize;
            } else {
                this.Left = m_ptHandle.X - this.Width + m_nHandleSize;
                m_rect_exclude.X = this.Width - m_nHandleSize;
                m_rect_panel.X = this.Left;
            }
            if (m_ptHandle.Y + this.Height > Screen.GetWorkingArea(this).Bottom) {
                this.Top = m_ptHandle.Y - this.Height + m_nHandleSize;
                m_rect_exclude.Y -= m_nHandleSize;
            } else this.Top = m_ptHandle.Y;
            m_rect_panel.Y = this.Top;
            m_region = new Region(new Rectangle(Point.Empty, this.Size));
            m_region.Exclude(m_rect_exclude);
            using (Graphics g = this.CreateGraphics()) {
                IntPtr h = m_region.GetHrgn(g);
                FrmNodePreviewPanel.SetWindowRgn(this.Handle, h, false);
                m_region.ReleaseHrgn(h);
            }

            this.MouseLeave += Event_MouseLeave;
            m_editor.MouseLeave += Event_MouseLeave;
            m_property.MouseLeave += Event_MouseLeave;
            this.BeginInvoke(new MethodInvoker(() => {
                m_property.Focus();
            }));
        }

19 Source : Form1.cs
with GNU General Public License v2.0
from dontpanic92

private void InitializeControls()
        {
            this.renderer = new FormRenderer(this);
            this.layout = new VerticalLayout(this)
            {
                Size = Helpers.GetDipSize(new Size2(this.Width, this.Height), this.renderer.Factory.DesktopDpi),
            };

            this.neovimClient.NeovimExited += this.OnNeovimExited;

            this.neovimControl = new NeovimControl(this.layout, this.neovimClient);
            this.neovimControl.EnableLigature = Properties.Settings.Default.EnableLigature;

            this.neovimClient.BackgroundColorChanged += (int intColor) =>
            {
                this.backgroundColor = intColor;
                this.Invoke(new MethodInvoker(() =>
                {
                    var color = Helpers.GetColor(intColor);
                    this.BlurBehind(
                        Color.FromArgb((int)(color.A * 255), (int)(color.R * 255), (int)(color.G * 255), (int)(color.B * 255)),
                        Properties.Settings.Default.BackgroundOpacity,
                        Properties.Settings.Default.BlurType);
                }));
            };

            var buttonSize = Helpers.GetDipSize(
                new Size2(SystemInformation.CaptionButtonSize.Width, SystemInformation.CaptionButtonSize.Height),
                this.renderer.Factory.DesktopDpi);

            var replacedleBar = new HorizontalLayout(this.layout)
            {
                Size = new Size2F(1, replacedleBarHeight),
            };
            this.logoControl = new LogoControl(replacedleBar);
            this.replacedleControl = new replacedleControl(replacedleBar);
            this.settingsButton = new ButtonControl(replacedleBar, "⚙", buttonSize)
            {
                Click = () =>
                {
                    var dialog = new Dotnvim.Dialogs.SettingsDialog();
                    dialog.ShowDialog();
                },
            };
            this.minimizeButton = new ButtonControl(replacedleBar, "🗕", buttonSize)
            {
                Click = () =>
                {
                    this.WindowState = FormWindowState.Minimized;
                    this.OnResize();
                },
            };
            this.maximizeButton = new ButtonControl(replacedleBar, "🗖", buttonSize)
            {
                Click = () =>
                {
                    this.WindowState =
                       this.WindowState == FormWindowState.Maximized ? FormWindowState.Normal : FormWindowState.Maximized;
                    this.OnResize();
                },
            };
            this.closeButton = new ButtonControl(replacedleBar, "✕", buttonSize)
            {
                Click = this.Close,
            };
            replacedleBar.AddControl(this.logoControl);
            replacedleBar.AddControl(this.replacedleControl, true);
            replacedleBar.AddControl(this.settingsButton);
            replacedleBar.AddControl(this.minimizeButton);
            replacedleBar.AddControl(this.maximizeButton);
            replacedleBar.AddControl(this.closeButton);

            this.neovimClient.replacedleChanged += (string replacedle) =>
            {
                this.BeginInvoke(new MethodInvoker(() =>
                {
                    this.Text = replacedle;
                }));
                this.replacedleControl.Text = replacedle;
            };

            this.neovimClient.ForegroundColorChanged += (int intColor) =>
            {
                var color = Helpers.GetColor(intColor);
                this.replacedleControl.Color = color;
                this.settingsButton.ForegroundColor = color;
                this.minimizeButton.ForegroundColor = color;
                this.maximizeButton.ForegroundColor = color;
                this.closeButton.ForegroundColor = color;
            };

            this.neovimClient.BackgroundColorChanged += (int intColor) =>
            {
                var color = Helpers.GetColor(intColor);
                this.settingsButton.BackgroundColor = color;
                this.minimizeButton.BackgroundColor = color;
                this.maximizeButton.BackgroundColor = color;
                this.closeButton.BackgroundColor = color;
            };

            this.layout.AddControl(replacedleBar);
            this.layout.AddControl(this.neovimControl, true);
            this.layout.Layout();
        }

19 Source : Form1.cs
with GNU General Public License v2.0
from dontpanic92

private void OnNeovimExited(int exitCode)
        {
            this.BeginInvoke(new MethodInvoker(() =>
            {
                this.Close();
            }));
        }

19 Source : WinFormsMetadataUpdateHandler.cs
with MIT License
from dotnet

internal static void UpdateApplication(Type[]? types)
        {
            // Repaint all open forms.
            foreach (Form openForm in Application.OpenForms)
            {
                openForm.BeginInvoke((MethodInvoker)(() => openForm.Refresh()));
            }
        }

19 Source : PrintPreviewControl.cs
with MIT License
from dotnet

protected override void OnPaint(PaintEventArgs pevent)
        {
            Color backColor = GetBackColor(SystemInformation.HighContrast);
            using var backBrush = backColor.GetCachedSolidBrushScope();

            if (pageInfo is null || pageInfo.Length == 0)
            {
                pevent.Graphics.FillRectangle(backBrush, ClientRectangle);

                if (pageInfo is not null || exceptionPrinting)
                {
                    // Calculate formats
                    using StringFormat format = new StringFormat
                    {
                        Alignment = ControlPaint.TranslateAlignment(ContentAlignment.MiddleCenter),
                        LineAlignment = ControlPaint.TranslateLineAlignment(ContentAlignment.MiddleCenter)
                    };

                    // Do actual drawing
                    using var brush = ForeColor.GetCachedSolidBrushScope();
                    pevent.Graphics.DrawString(
                        exceptionPrinting ? SR.PrintPreviewExceptionPrinting : SR.PrintPreviewNoPages,
                        Font,
                        brush,
                        ClientRectangle,
                        format);
                }
                else
                {
                    BeginInvoke(new MethodInvoker(CalculatePageInfo));
                }
            }
            else
            {
                if (!layoutOk)
                {
                    ComputeLayout();
                }

                Size controlPhysicalSize = new Size(PixelsToPhysical(new Point(Size), screendpi));

                //Point imagePixels = PhysicalToPixels(new Point(imageSize), screendpi);
                Point virtualPixels = new Point(VirtualSize);

                // center pages on screen if small enough
                Point offset = new Point(
                    Math.Max(0, (Size.Width - virtualPixels.X) / 2),
                    Math.Max(0, (Size.Height - virtualPixels.Y) / 2));
                offset.X -= Position.X;
                offset.Y -= Position.Y;
                lastOffset = offset;

                int borderPixelsX = PhysicalToPixels(border, screendpi.X);
                int borderPixelsY = PhysicalToPixels(border, screendpi.Y);

                Region originalClip = pevent.Graphics.Clip;
                Rectangle[] pageRenderArea = new Rectangle[rows * columns];
                Point lastImageSize = Point.Empty;
                int maxImageHeight = 0;

                using (var clipScope = new GraphicsClipScope(pevent.GraphicsInternal))
                {
                    for (int row = 0; row < rows; row++)
                    {
                        // Initialize our LastImageSize variable...
                        lastImageSize.X = 0;
                        lastImageSize.Y = maxImageHeight * row;

                        for (int column = 0; column < columns; column++)
                        {
                            int imageIndex = StartPage + column + row * columns;
                            if (imageIndex < pageInfo.Length)
                            {
                                Size pageSize = pageInfo[imageIndex].PhysicalSize;
                                if (autoZoom)
                                {
                                    double zoomX = ((double)controlPhysicalSize.Width - border * (columns + 1))
                                        / (columns * pageSize.Width);
                                    double zoomY = ((double)controlPhysicalSize.Height - border * (rows + 1))
                                        / (rows * pageSize.Height);
                                    zoom = Math.Min(zoomX, zoomY);
                                }

                                imageSize = new Size((int)(zoom * pageSize.Width), (int)(zoom * pageSize.Height));
                                Point imagePixels = PhysicalToPixels(new Point(imageSize), screendpi);

                                int x = offset.X + borderPixelsX * (column + 1) + lastImageSize.X;
                                int y = offset.Y + borderPixelsY * (row + 1) + lastImageSize.Y;

                                lastImageSize.X += imagePixels.X;
                                //The Height is the Max of any PageHeight..
                                maxImageHeight = Math.Max(maxImageHeight, imagePixels.Y);

                                pageRenderArea[imageIndex - StartPage] = new Rectangle(x, y, imagePixels.X, imagePixels.Y);
                                pevent.Graphics.ExcludeClip(pageRenderArea[imageIndex - StartPage]);
                            }
                        }
                    }

                    pevent.Graphics.FillRectangle(backBrush, ClientRectangle);
                }

                for (int i = 0; i < pageRenderArea.Length; i++)
                {
                    if (i + StartPage < pageInfo.Length)
                    {
                        Rectangle box = pageRenderArea[i];
                        pevent.Graphics.DrawRectangle(Pens.Black, box);
                        using (var brush = ForeColor.GetCachedSolidBrushScope())
                        {
                            pevent.Graphics.FillRectangle(brush, box);
                        }

                        box.Inflate(-1, -1);
                        if (pageInfo[i + StartPage].Image is not null)
                        {
                            pevent.Graphics.DrawImage(pageInfo[i + StartPage].Image, box);
                        }

                        box.Width--;
                        box.Height--;
                        pevent.Graphics.DrawRectangle(Pens.Black, box);
                    }
                }

19 Source : MainForm.cs
with MIT License
from dvingerh

private async void ExportOrAbort(object sender, EventArgs e)
        {
            if (!isBusy)
            {
                isBusy = true;
                ExportButton.Text = "Abort";
                SettingsGroupBox.Enabled = false;
                Directory.CreateDirectory(AppVariables.ProcessingDir);
                Directory.CreateDirectory(AppVariables.LibsDir);
                ClearTempDirectories();
                StatusTextBox.Clear();
                if (!AppResources.IsUnpacked)
                {
                    WriteStatus("Unpacking libraries", prefix:false);
                    WriteStatus("");
                    await Task.Run(() =>
                    {
                        AppResources.UnpackResources();
                    });

                }
                OverallExportProgressBar.Value = 0;
                OverallExportProgressBar.Style = ProgressBarStyle.Marquee;
                CurrentExportProgressBar.Value = 0;
                CurrentExportProgressBar.Maximum = 0;
                int index = 0;
                int overallIndex = 0;
                Directory.CreateDirectory(AppVariables.ProcessingDir);
                Directory.CreateDirectory(Path.Combine(AppVariables.ProcessingDir, "wem"));
                if (AppVariables.CreateWav)
                    Directory.CreateDirectory(Path.Combine(AppVariables.ProcessingDir, "wav"));
                if (AppVariables.CreateMp3)
                    Directory.CreateDirectory(Path.Combine(AppVariables.ProcessingDir, "mp3"));
                if (AppVariables.CreateOgg)
                    Directory.CreateDirectory(Path.Combine(AppVariables.ProcessingDir, "ogg"));
                if (AppVariables.CreateFlac)
                    Directory.CreateDirectory(Path.Combine(AppVariables.ProcessingDir, "flac"));

                if (!isAborted)
                {
                    WriteStatus("Exporting PCK  =>  WEM  (Required)", prefix:false);
                    WriteStatus("");
                    await Task.Run(() =>
                    {
                        IProgress<int> progress = new Progress<int>(value =>
                        {
                            BeginInvoke((System.Action)(() =>
                            {
                                CurrentExportProgressBar.Maximum = AppVariables.PckFiles.Count;
                                CurrentExportProgressBar.Value = value;
                            }));
                        });
                        foreach (string pckFile in AppVariables.PckFiles)
                        {
                            if (!isAborted)
                            {
                                PckToWem.StartPckToWem(pckFile, this);
                                BeginInvoke((System.Action)(() =>
                                {
                                    WriteStatus($"{Path.GetFileName(pckFile)}  =>  {Path.GetFileNameWithoutExtension(pckFile)}.wem");
                                }));
                                index += 1;
                                progress.Report(index);
                            }
                            else
                                break;
                        }
                    });
                }
                if (!isAborted)
                {
                    WriteStatus("");
                    WriteStatus("Exporting WEM  =>  WAV  (Required)", prefix: false);
                    WriteStatus("");
                    index = 0;
                    await Task.Run(() =>
                    {
                        AppVariables.WemFiles = Directory.GetFiles(Path.Combine(AppVariables.ProcessingDir, "wem"), "*.wem").ToList();
                        BeginInvoke((System.Action)(() =>
                        {
                            OverallExportProgressBar.Style = ProgressBarStyle.Blocks;
                            int overallMaximum = AppVariables.WemFiles.Count;
                            foreach (CheckBox formatCheckBox in SettingsGroupBox.Controls.OfType<CheckBox>())
                            {
                                if (formatCheckBox.Checked)
                                    overallMaximum += AppVariables.WemFiles.Count;
                            }

                            OverallExportProgressBar.Maximum = overallMaximum;
                        }));
                        IProgress<int> progress = new Progress<int>(value =>
                        {
                            BeginInvoke((System.Action)(() =>
                            {
                                CurrentExportProgressBar.Maximum = AppVariables.WemFiles.Count;
                                CurrentExportProgressBar.Value = value;
                                OverallExportProgressBar.Value = overallIndex;
                            }));
                        });
                        foreach (string wemFile in AppVariables.WemFiles)
                        {
                            if (!isAborted)
                            {
                                WemToWav.StartWemToWav(wemFile, this);
                                BeginInvoke((System.Action)(() =>
                                {
                                    WriteStatus($"{Path.GetFileName(wemFile)}  =>  {Path.GetFileNameWithoutExtension(wemFile)}.wav");
                                }));
                                index += 1;
                                overallIndex += 1;
                                progress.Report(index);
                            }
                            else
                                break;
                        }
                    });
                }

                AppVariables.WavFiles = Directory.GetFiles(Path.Combine(AppVariables.ProcessingDir, "wav"), "*.wav").ToList();

                if (AppVariables.CreateWav && !isAborted)
                    await ExportAudioFormat("wav");
                if (AppVariables.CreateMp3 && !isAborted)
                    await ExportAudioFormat("mp3");
                if (AppVariables.CreateOgg && !isAborted)
                    await ExportAudioFormat("ogg");
                if (AppVariables.CreateFlac && !isAborted)
                    await ExportAudioFormat("flac");
            }
            else
            {
                isAborted = true;
                ExportButton.Text = "Aborting...";
                ExportButton.Enabled = false;
                return;
            }
            Application.DoEvents();
            OnExportEnded(isAborted);
        }

19 Source : MainForm.cs
with MIT License
from dvingerh

private async Task ExportAudioFormat(string format)
        {
            Directory.CreateDirectory(Path.Combine(AppVariables.OutputDir, format));
            int index = 0;
            int overallIndex = OverallExportProgressBar.Value;

            WriteStatus("");
            if (format == "wav")
                WriteStatus("Copying WAV Files to destination directory", prefix: false);
            else
                WriteStatus($"Exporting WAV  =>  {format.ToUpper()}", prefix: false);
            WriteStatus("");

            await Task.Run(() =>
            {
                IProgress<int> progress = new Progress<int>(value =>
                {
                    BeginInvoke((System.Action)(() =>
                    {
                        CurrentExportProgressBar.Maximum = AppVariables.WavFiles.Count;
                        CurrentExportProgressBar.Value = value;
                        OverallExportProgressBar.Value = overallIndex;
                    }));
                });
                foreach (string wavFile in AppVariables.WavFiles)
                {
                    if (!isAborted)
                    {
                        if (format != "wav")
                            WavConverter.ConvertWav(wavFile, format);
                        string srcFile = Path.Combine(AppVariables.ProcessingDir, format, Path.GetFileNameWithoutExtension(wavFile) + $".{format}");
                        string destFile = Path.Combine(AppVariables.OutputDir, format, Path.GetFileNameWithoutExtension(wavFile) + $".{format}");

                        File.Copy(srcFile, destFile, true);
                        BeginInvoke((System.Action)(() =>
                        {
                            WriteStatus($"{Path.GetFileName(wavFile)}  =>  {Path.GetFileName(srcFile)}");
                            exportedAudioFiles += 1;
                            index += 1;
                            overallIndex += 1;
                            progress.Report(index);
                        }));
                    }
                    else
                        break;
                }
            });
        }

19 Source : OGLControl.cs
with GNU Lesser General Public License v3.0
from Edgar077

private void Timer_Tick(object sender, EventArgs e)
        {
            animationAngle += 0.01f;
            if (animationAngle > float.MaxValue)
                animationAngle = 0f;
            //System.Diagnostics.Debug.WriteLine("Timer_Tick: ");
            this.BeginInvoke(new AnimateDelegate(Animate));


        }

See More Examples