以及我是新來的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,請給我一些代碼爲相同的 –