StramWriter
private void button1_Click(object sender, EventArgs e) {
string data = "ABC中文字";
System.IO.StreamWriter writer =
new System.IO.StreamWriter(@"c:\\temp\\lab2.txt");
writer.WriteLine(data);
writer.WriteLine("Line2");
writer.WriteLine("Line3");
writer.Close();
}
private void button2_Click(object sender, EventArgs e) {
System.IO.StreamReader r =
new System.IO.StreamReader(@"c:\\temp\\lab2.txt");
string fileContent = r.ReadToEnd();
textBox1.Text = fileContent;
r.Close();
}
private void button3_Click(object sender, EventArgs e) {
System.IO.StreamReader r =
new System.IO.StreamReader(@"c:\\temp\\lab2.txt");
do {
string line = r.ReadLine();
textBox1.Text += $"{line}\\r\\n";
} while (!r.EndOfStream);
r.Close();
}
application.doevents()
backgroundworker
private void button1_Click(object sender, EventArgs e) {
for (int i = 1; i <= 100000; i++) {
label1.Text = i.ToString();
}
}
SIGNALR
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Lab1030_BackgroundWorker {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) {
for (int i = 1; i <= 1000; i++) {
label1.Text = i.ToString();
Application.DoEvents();
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
for (int i = 1; i <= 1000; i++) {
if (backgroundWorker1.CancellationPending) {
break;
}
label1.Text = i.ToString();
}
}
private void button2_Click(object sender, EventArgs e) {
backgroundWorker1.RunWorkerAsync();
this.Text = DateTime.Now.ToString();
}
private void button3_Click(object sender, EventArgs e) {
backgroundWorker1.CancelAsync();
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Lab1030_BackgroundWorker {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) {
for (int i = 1; i <= 1000; i++) {
label1.Text = i.ToString();
Application.DoEvents();
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
for (int i = 1; i <= 1000; i++) {
if (backgroundWorker1.CancellationPending) {
break;
}
label1.Text = i.ToString();
}
}
private void button2_Click(object sender, EventArgs e) {
backgroundWorker1.RunWorkerAsync();
this.Text = DateTime.Now.ToString();
}
private void button3_Click(object sender, EventArgs e) {
backgroundWorker1.CancelAsync();
}
}
}
按鈕 1 的功能 (button1_Click
):
private void button1_Click(object sender, EventArgs e) {
for (int i = 1; i <= 1000; i++) {
label1.Text = i.ToString();
Application.DoEvents();
}
}
label1
控制項上。Application.DoEvents()
允許應用程序處理其他事件,這樣用戶界面不會凍結。但這種方式不推薦使用,因為可能會導致不必要的性能問題。背景工作 (backgroundWorker1_DoWork
):
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
for (int i = 1; i <= 1000; i++) {
if (backgroundWorker1.CancellationPending) {
break;
}
label1.Text = i.ToString();
}
}
label1
的文本。backgroundWorker1.CancellationPending
檢查是否需要取消任務。按鈕 2 的功能 (button2_Click
):
private void button2_Click(object sender, EventArgs e) {
backgroundWorker1.RunWorkerAsync();
this.Text = DateTime.Now.ToString();
}