/// <summary> /// Click event for Generate Barabasi-Albert button. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void barabasiAlbertGrafToolStripMenuItem_Click(object sender, EventArgs e) { FormBASetup fba = new FormBASetup(); //Opens a dialog to set NP graph parameters. When the DialogResult is OK, then it starts a new thread for generating the graph. if (fba.ShowDialog() == DialogResult.OK) { ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem(new string[] { "Graf Barabási-Albert (n=" + fba.n.ToString() + ", m=" + fba.m.ToString() + ")", "", "Generuje sa..." }, -1); listView1.Items.Add(listViewItem1); ba_TestObject data = new ba_TestObject(); data.n = fba.n; data.m = fba.m; data.index = listView1.Items.Count - 1; BackgroundWorker t = new BackgroundWorker(); t.DoWork += ba_DoWork; t.RunWorkerCompleted += ba_RunWorkerCompleted; t.RunWorkerAsync(data); } }
/// <summary> /// The Thread for generating BA graph. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ba_DoWork(object sender, DoWorkEventArgs e) { ba_TestObject data = e.Argument as ba_TestObject; data.start = DateTime.Now; GraphBarabasiAlbert graf = new GraphBarabasiAlbert(); graf.Generate(data.n, data.m); data.graf = graf; e.Result = data; }
/// <summary> /// This event is called when the BackgroundWorker component(Thread) process is completed. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ba_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { ba_TestObject data = e.Result as ba_TestObject; DateTime date = DateTime.Now; TimeSpan timeDiff = date - data.start; listView1.Items[data.index].SubItems[2].Text = "Hotovo."; listView1.Items[data.index].SubItems[1].Text = date.ToString("dd. MM. yyyy hh:mm:ss") + " (" + timeDiff.TotalSeconds.ToString("0.00") + "s)"; GraphItem item = new GraphItem(); item.graph = (Graph)data.graf; item.type = GraphItem.BA; graphs.Add(data.index, item); }