-2
  1. キャンセルボタンをクリックすると、データグリッドビューをクリアするにはどうすればよいですか。プロセスは開始から開始されますが、新しいスレッドを開始する前に、データグリッドビューを毎回クリアする必要があります。

  2. th.Suspend(),th.Resume(),th.Abort() // this is obsolete. これは非推奨になりました。この種の警告が表示されますが、それでも使用するコードは問題なく機能します。これまでスレッドで作業したことはありません。

Reset(),set()メソッドを使用するときはいつでも機能しません。私はそれらを正しい方法で使用するためのアイデアを得ることができなかったかもしれません。正しい方法で使用するための提案はありますか?

ManualResetEvent run=new ManualResetEvent(true); 
ManualResetEvent shut=new ManualResetEvent(false);     
public delegate void GridTestResults(int Sno,string Name,double MinValue,double MaxValue,double Value,string Result,string Time);


public void ValuesToGrid(int Sno,string Name,double MinValue,double MaxValue,double Value,string Result,string Time)
{
    DataRow row=table.NewRow();
    if(this.InvokeRequired)
    {
        GridTestResults grid = new GridTestResults(this.ValuesToGrid);
        this.Invoke(grid,new object[]{Sno,Name,MinValue,MaxValue,Value,Result,Time});
    }
    else
    {
        row["Sno"] = Sno;
        row["Name"] = Name;
        row["MinValue"] = MinValue;
        row["MaxValue"] = MaxValue;
        row["Value"] = Value;
        row["Result"] = Result;
        row["Time"] = Time;
        table.Rows.Add(row);

        dataGridView1.Refresh();

        //How can i clear all the rows of gridview once the
        // its clicks the start button after cancel button
    }
}

 private void Startbutton_Click(object sender, EventArgs e)
{ 
    stopwatch.Start();
    timer1.Start();
    ts=new ThreadStart(ProcessStarted);
    th=new Thread(ts);                 
    th.Start();            
}

private void Pausebutton_Click(object sender, EventArgs e)
{                  
    if (th.ThreadState == System.Threading.ThreadState.Suspended)
    {
        timer1.Enabled = true;
        label5.Enabled = true;
        Pausebutton.Enabled = true;
        th.Resume();  //run.Set(); // this is obsolete.This has been deprecated.
        label3.Text = "The Current thread has resumed again";
    }
    else
    {
        label5.Enabled = false;
        timer1.Enabled = false;
        th.Suspend();  
        //th.Suspend(); // this is obsolete.This has been deprecated.
        label3.Text = "The current thread suspended";
    }
}

private void Cancelbutton_Click(object sender, EventArgs e)
{
    timer1.Stop();
    stopwatch.Stop();

    if (th.ThreadState==System.Threading.ThreadState.Suspended)
    {
         try
        {
             th.Abort();
        }
        catch (Exception)
        {
             th.Resume();
        }

    }
    try
    {
        th.Abort();
        //th.Join();
    }
    catch (Exception)
    {
        th.Resume();
    }
    label3.Text = "The Testprocess stopped completely";

    //dataGridView1.Rows.Clear();
    //dataGridView1.DataSource = null;  
    //i cannot use any of these two way to clear the gridview....
    //gives error like cannot clear the list
    stopwatch.Reset();    
}

private void ProcessStarted()
{
    //all the methods to be shown in datagridview 

void oneMethod()
{
    Application.Run(new OneForm()); 
    //here the form appears as popup window.once
    // we click ok button it will closes automatically.
    //now the problem is when ever i clcik pause button the OneForm will 
    // hangs and when i clcik resume it will work normally.
    // am not sure is it the correct way of doing r not while 
    // working with the threads?
}

    //dataGridView1.Rows.Clear(); 
    //Here also it does not work..gives same exception like 
    //cannot clear the list.
}
4

1 に答える 1

0

Datatable clear()Datatableの行をクリアするために使用します。

于 2012-08-30T09:42:39.637 に答える