タグ

2020年7月7日のブックマーク (3件)

  • C#で別スレッドからコントロールを操作する (Dispatcher.Invoke)

    <Window x:Class="WpfTest1.MainWindow" Title="MainWindow" Height="150" Width="250"> <Grid Margin="10"> <StackPanel> <TextBlock x:Name="CtrlText" Text="進捗:"/> </StackPanel> </Grid> </Window> public partial class MainWindow : Window { // 時間のかかる処理をするメソッド private async void Test() { await Task.Run(() => { for (int i = 1; i <= 100; ++i) { // // ここで重たい処理をする // // CtrlText.Text = "進捗:" + i.ToString() + "%

    C#で別スレッドからコントロールを操作する (Dispatcher.Invoke)
    tanosikeizaigaku
    tanosikeizaigaku 2020/07/07
    C#でUIに対する処理を非同期で行いたい、つまり別スレッドから行いたい場合...Dipatcher.Invokeを使って、メインスレッドで実行するように命令を出す
  • 【C#】Task初心者のTask初心者によるTask初心者の為のTask入門 - Qiita

    背景 Taskってなんだか小難しい割に初心者向きの、というかTask入門的な記事が少ない気がする。というか少ないです。 以前書いた、【C#】Cドライブ以下にある全てのファイルパスを非同期かつIEnumerableに取得してみたという記事ではかなり丁寧に書いたつもりだったが「コピペで動くようなものを書け」という要望があったのでこの記事ではコピペで動く、そして分からないが分かるをコンセプトに書いてみました。 問題提起 同期の後輩がこのような事で悩んでいる、という事を聞きました。 WinFormでTimerイベントを使わずに1秒毎にファイルの中身を取得したい。 Timerイベントを使いたくない理由としては何故かウィルスソフトに過剰検知されてしまうからで、Taskを使って実現してみたい。だが、イマイチ書き方がわからない…。 おk把握。つまり、こういう事ですね。 using System; usin

    【C#】Task初心者のTask初心者によるTask初心者の為のTask入門 - Qiita
    tanosikeizaigaku
    tanosikeizaigaku 2020/07/07
    既存のUIへの同期処理を非同期にしたい場合、Task.Run,Invokeメソッドを用いることで解決できる
  • ユーザーがDataGridViewのセルに正しくない値を入力した時に発生するエラーを捕捉する

    注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。 例えば、数値型の列のセルにアルファベットを入力すると、「DataGridView の既定のエラーダイアログ」というダイアログが表示され、例外が発生したことをユーザーに知らせます。ユーザーがセルに正しくない値を入力するとこのようなダイアログが表示されますが、ユーザーにとっては意味不明の内容ですので、このようなダイアログをそのまま表示させるのは適切ではありません。 このダイアログを表示しないようにするには、DataErrorイベントをハンドルします。この方法は、ヘルプの「DataGridView の既定のエラーダイアログ」でも説明されています。 DataErrorイベントハンドラにより、独自のダイアログを表示するごく簡単なサンプルを示します。 'DataErrorイベントハンドラ Pri

    ユーザーがDataGridViewのセルに正しくない値を入力した時に発生するエラーを捕捉する
    tanosikeizaigaku
    tanosikeizaigaku 2020/07/07
    なぞのエラーが出るのを防ぐ