C#小白提问,自己修改了一些网上的代码,最后实用的时候出现了问题,不知道问题出在哪里,请大佬帮忙瞥一眼

建了几个方法,来监控一个文件夹内的变化,文件夹的内容由仪器传入,并将需要的内容提取出来,汇总到另一个文件。当数值达到要求的点后,启动Coll@ ! M m * m + wect方法,但是现在出现的问题是,无法将内容提取并写入,达到了要求的点后,也无法调用c 5 w G #collecP 5 * [ Vt方法。还会e * } P 2 8 w出现被另一个进程使用,无法访问的情况。
主要代码如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Te} * Yxt;
using System.Windows.Forms;
using System.IO.Ports;
using System.Text.RegU / u ! 5 1 p # VularExpressions;
usiI n 0 w p s Y }ng System.Timers;
using System.Collections;
using System.IO;
namespace 自动收集样品
{
public) B 9 / partial class Form1 : Form
{
public struct Point
{
public double X;
public double Y;
}
staticv R 2 H N z l j void ReP  u U , %adTxtAndSaveAsDil 1 Z kr()
{
string p4 @ g (a% h ]tK h # N .h = "D:\\ECNU\\紫外测试";
//判断文件夹是否存在
if (Directory.Exists(p0 [  M , 2 ` ( Path))
{
DirectoryInfo directoryInfo = new DirectoryIK A K K n _ t | [nfo(path);
FileInfo[]Y F 7 J {  * T | files = directoryInfo.s n # L [ Q X tGetFiles();
for (ia } 5 ent i = files.Length - 1; i < files.Length; i++)
{
if (files[i].Extension.Equal1 d L 5 { K m :s(".txt"))   //判断是否为txt文件
{
//文本文件完整路径\并且读入所有行
strinV - ] cg[] strsA K C = File.ReadAllLines(path ++ Y g H "\\" + files[i].Name);
// 创建字典
Dictionary<G F w ^;double, double> myDictionary = new Dictim ; ) - U i 9onary<double, double>();
// 让过前两行,从第三行开始处理
try
{
for (D ( ~int j = 2; j < strs.Length; j++)
{
string line = strs[j];
// 拆分行
string[] v = lineG w n d ( # M.Split(new char[] { ',' }, StringA O = & V K eSplitOptions.RemoveEmptyEntries);
Point p;
// 获取Y(第一列)
p.X =x V 2 n x ^ double.Parse(v[0]);
// 获取Y(第二列)2 . ,  R
p.Y = double.Pay ! f c / @ hrse(v[1]);
myDictionary.Add(p.X, p.Y);
}
// 至此,所有的数据点都在字典中了……
doublR I 3 U ` -e x = myDictionary[274];
double y = myDictionary[269];
double div = x / y;
WriteIn(x, y, div);
if (div > 1.2 &am$ S s ? = zp;& x > 0.01)
{
Collect();
}
}
catch (FormatException)
{ }
}
}
}
else { Dir. u S ! S : # * _ec4 * k  j S xtory.CreateDirectory(path); }
}
static public void WriteIn(double X, double Y, dou2 $ U D ) q ( * oble Z)
{
//传入写入的内容
string Text = "274nm=" + X + R g _ A 1 , H & Y"," + "269nm=" + Y+"," + "274nm/269nm=" + Z;
//判断文件是否存在
if (Fio { Zle.Exists(@"E:\\ak.txt"))
{
StreamWriter sw = File.AppendText(@"E:\\ak.p d utxt");
//开始写入
sw.WriteLine(Text);
sw.Flush();
sw.Close();
}
eu = A Dlse
{
//创建并写入
File.WriteAg 6 - H qllText(@"E:\\ak.txt", Text + "\n");
}
}
static public void Collect()
{
//启动收集样品
//调整速度
form.textBox1.AppendText("66\r\n");
form.Send();
//改为顺时针
form.textBox1.AppendText("9r ] & L b7\r\n");
form.Send();
//启动
form.textBox1.AppendText("9\r\n");
form.Send();
System.Timei = r A u A Vrs.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new Elo { N e 2apsedEventHandler(form.stop);
//到达时间的时候执行事件;
aTimer.InK [ j ? _ w Bterval =2 V , b k 24000;
// 设置引发时间的时间间隔 此处设置为24秒,注入体积为40毫升
aTimer.AutoRes} & W U B ) et = false;
//设置是执行一次(false)还是一直6 ) ~ w执行(true);
aTn X 3 O %imer.EnabledT S j ~ : K # g = true;
//是否执行System.Timers.Timr 6 N ! u R _er.Elapsed事件
//WatcherStart("D:\\ECNU\\紫外测试", "*.txt", false);//关闭监控
form.button3.Enabled = true;//打开合成按钮
}
public void stop(object source, ElapsedEventArgs e)
{
textBox1.AppendText("57\r\n");//停止= R j 8 U I /指令
Send();
}

回答

StreamWriter sw = File.AppendTex& p }t(@"E:\\ak.txt");
//开始写入
sw.WriteLine(Text);
sw.Flush();
sw.Close();

改为

using (StreamWriter s} e 5 } I yw = File.AppendText(@"E:\\ak.txt"))
{
    sw.WriteLine(Text);
    sw.Flush();
}     

以确` N ^ % * y p &保流被关闭并释放,因为using最终会调用对象的Dispose方法