以及我是新来的C#,并实现代码,其中我有两个按钮,其中一个作为开始数据采集和存储在一个csv文件和其他按钮来停止它。对于所有这些需要某种循环或跳转语句为我的代码
以及代码如下:
//按钮开始DAQ
private void stdaq_Click(object sender, EventArgs e)
{
stopped = false;
process();
}
//按钮回采DAQ
private void spdaq_Click(object sender, EventArgs e)
{
stopped = true;
}
//处理功能
private process()
{
int iAvail = 0;
int iRead = 0;
string filename = @textBox3.Text;// taking csv file name from user
// jit:
//a function calculating the total number of values and storing it in iAvail
int[] iRawData = new Int32[iAvail];
double[] dScaledData = new Double[iAvail];
//a function transferring the data from buffer and storing it in dscaledData array
List<double> data = new List<double>();
for (int i = 0; i < iAvail; i++)
{
data.Add(dScaledData[i]);
}
Task myFirstTask = Task.Factory.StartNew(()
=>
{
while (stopped == false)
{
Write(data.ToArray(), filename);
// goto jit;
}
});
}
// CSV创世和数据写入
public static void Write(double[] data, string outputPath)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < data.GetLength(0); i++)
{
if (stopped) break;
sb.AppendLine(string.Join(",", data[i]));
}
if (File.Exists(outputPath))
{
File.AppendAllText(outputPath, sb.ToString());
}
else
{
File.WriteAllText(outputPath, sb.ToString());
}
}
这就是我在执行,以及与此代码的问题是,当数据被首先传送和写入文件,然后再次相同的数据一次又一次不论写的新数据,我试图实现该Goto语句(可以在评论中看到),但它给错误 - “控制不能离开匿名方法或lambda表达式的主体”,如果我不使用While循环的数据根本不写。
所以我想打电话给我的过程函数并将数据传输到csv开始按一个开始按钮,每次采取新的数据并写入csv或可以说从它的起点再次调用过程方法,并且停止它点击停止按钮,但我无法做到这一点,不管各种不同循环和一些线程函数的尝试。
请帮忙。
这也许是因为'从缓冲区传输数据并将其存储在dscaledData array'的功能是不是在循环。 – Dzienny
@Dzienny,请给我一些代码为相同的 –