0

[バックグラウンドワーカースレッドで]ファイルを1行ずつ読み取り、[BeginInvokeを使用して]データグリッドビューにデータを入力するWindowsフォームアプリケーションを開発しています。これが行われている間、UI は応答しなくなります (キャンセル/終了またはウィンドウをドラッグできません) が、datagridview が更新されているのを見ることができます。私が知っているのは、これは、メッセージがユーザー入力メッセージよりも優先度の高いメッセージ キューに送られているという事実によるものです。

ユーザー入力に対する UI の応答性を維持する方法はありますか?

4

2 に答える 2

0

以下のスニペットが役立つ場合があります。

    CancellationTokenSource tokenSource2 = new CancellationTokenSource();
    CancellationToken ct;
    public MainWindowViewModel()
    {      

        ct = tokenSource2.Token;
        Task.Factory.StartNew(PopulateDataGrid, ct);
    }

    /// <summary>
    /// 
    /// </summary>
    private void PopulateDataGrid()
    {           
        for (int i = 1; i < 10000; i++)
        {
            if (!ct.IsCancellationRequested)
            {

                 ///Populate Your Control here                   
            }
            else
            {
                break;
            }
        }
    }

    public void OnCancelCLick()
    {
        tokenSource2.Cancel();
    }
}
于 2015-10-28T10:43:41.477 に答える