-4

私は 2 つの主要な処理を含むプロジェクトに取り組んでいます。timer_tick を使用して、アプリケーションを非常に遅くする処理を処理しようとしました。アプリケーションは常に実行されている必要があります。timer_tick のタイマーの側面で X 秒ごとにメソッドをトリガーする必要がありましたが、複数のスレッドを使用すると、はるかに高速になります。

誰でも助けることができますか?

アプリケーションの現在の構造は次のとおりです。

 public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        setting_info();
    }

    public void setting_info()
    {
        // takes data from config file for API connections
    }

    private void swis()
    {
        // connects to API and fetches data
        // need to be continuously running - Ideally Interval(1200)
    }

    private void st_processing()
    {
        // processes the data that was fetched in swis() slows down the program without multiple threading
        // need to be continuously running - Ideally Interval(800)
    }

    private void alert_in_timer_Tick(object sender, EventArgs e)
    {            
        while (alert_in == true)
        {
            swis();
            break;
        }
    }

     private void st_processing_timer_Tick(object sender, EventArgs e)
    {
        while (st_processing == true && alert_data_database_has_data == true)
        {
            st_processing();
            //check_error_count();
            alert_data_database_has_data = false;
            break;
        }
    }
}
4

1 に答える 1

0

何を知りたいのか不明。ここで説明されているように、C# には多くの優れたスレッド化チュートリアルがあります

スレッドの開始は簡単です

Thread worker = new Thread(new ThreadStart(swis));
//...
worker.join();

スレッドの動作の結果として GUI を更新する必要がある場合は注意が必要です。以前ここで説明しました。

現時点ではalert_in_timer_Tick、関数と呼ばれたら中断しswisます。

while (alert_in == true)
{
    swis();
    break;// why is this here?
}
于 2013-07-29T09:52:01.543 に答える