
两个计算机的users 通过使用SerialPort class 去进行聊天 ,两个电脑通过的是a null modem cable(这里应该指的是串口线,因为RS232线的名字是RS232 Cable (Null Modem Cable))进行连接。winform串口传文件我们现阶段主要实现的从串口中获取数据,写数据暂时不需要,所以我们可以在里面提取我们需要的部分。
先读取所有的行,然后遍历这些行,对第一个字符串进行验证即可。StringBuilder
content
=
new
StringBuilder()
string[]
allLines
=
File.ReadAllLines(txtPath)
for
(int
i
=
1
i
<
allLines.Length
i++)
{
//
如果是用“Tab”隔开字符串
var
values
=
allLines[i].Split('\t')
if(string.Equals(values[0],你的验证字符串)
{
//
如果相等说明是符合条件的,则记录这一行
content.Append(allLines[i]+"\r\n")
}
}
//
写入新的txt文件
FileStream
fs
=
new
FileStream(newFilePath,
FileMode.Open,
FileAccess.Write)
byte[]
bytes
=
Encoding.Default.GetBytes(content)
fs.Write(bytes,
0,
bytes.Length)
fs.Close()
1)在Form1上布置一个PorgressBar,名称progressBar1
2)在Form1上布置一个Button,名称:button1, Text:导入
3)在Form1上布置一个Button,名称:button2, Text:取消导入
4)在Form1上布置一个BackgroundWorker,名称:backgroundWorker1
5)在Form1上布置一个Label,名称:label1
using Systemusing System.Collections.Generic
using System.ComponentModel
using System.Data
using System.Drawing
using System.Linq
using System.Text
using System.Windows.Forms
using System.IO
namespace WinFormBackgroundWorker
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent()
//设置 backgroundWorker1
//允许报告后台处理进度
backgroundWorker1.WorkerReportsProgress = true
//运行取消后台执行
backgroundWorker1.WorkerSupportsCancellation = true
//事件
backgroundWorker1.DoWork += backgroundWorker1_DoWork
backgroundWorker1.RunWorkerCompleted +=
backgroundWorker1_RunWorkerCompleted
backgroundWorker1.ProgressChanged +=
backgroundWorker1_ProgressChanged
//progressBar1
progressBar1.Maximum = 100
//按钮
button1.Enabled = true
button2.Enabled = false
//lable1
label1.Text=string.Empty
}
void backgroundWorker1_ProgressChanged(object sender,
ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage
label1.Text = (string)e.UserState
}
void backgroundWorker1_RunWorkerCompleted(object sender,
RunWorkerCompletedEventArgs e)
{
if (e.Cancelled)
{
label1.Text = "任务取消!"
progressBar1.Value = 0
}
else
{
label1.Text = "任务完成!"
}
button1.Enabled = true
button2.Enabled = false
}
void backgroundWorker1_DoWork(object sender,
DoWorkEventArgs e)
{
//获取文件夹中文件信息
string[] files = Directory.GetFiles(@".")
int i = 0
foreach (var fs in files)
{
// 如果后台 *** 作处理过程中,用户按下取消键
if (backgroundWorker1.CancellationPending)
{
//停止后台处理
e.Cancel = true
break
}
i++
string msg = "正在处理:" + fs
backgroundWorker1.ReportProgress(i *100 /files.Length, msg)
//用一个Sleeep,模拟处理文件的长耗时过程
System.Threading.Thread.Sleep(2000)
}
}
private void button1_Click(object sender, EventArgs e)
{
button1.Enabled = false
button2.Enabled = true
//异步启动后台任务(多线程方式)
backgroundWorker1.RunWorkerAsync()
}
private void button2_Click(object sender, EventArgs e)
{
//取消后台 *** 作执行
backgroundWorker1.CancelAsync()
}
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)