C#でマルチスレッド(Task.Run , async , await , Lock)

WPFアプリ(C#)でTask.Runを使用して別スレッドで処理をする方法と、その処理経過を画面のプログレスバーに表示するための方法をまとめてサンプルソフトを作りました。
サンプルソフトはPrismを使用したMVVMスタイルのWPFアプリです。
[Visual Studio 2017、Prism7.1、.NET4.5.2]

  • 概要
  • スレッド起動(Task.Run)
  • タスク終了待ち(async & await)
  • 画面部品へのアクセスと処理キャンセルの方法(IProgress , CancellationToken)
  • 排他処理(Lock)
  • コマンドボタンの有効/無効
  • サンプルアプリの説明
続きを読む

WPFユーザーコントロールの作成例(スライドメータ)

WPFでアプリを作るのだから、見やすく美しい画面を作らないと意味がないでしょう。
という事で、少し変わったメータをユーザーコントロールとして作ってみました。
普通のメータは針が動きますが、これは目盛りが動くタイプのメータです。
Visual Studio 2017 を使用します。

  • 作成するユーザーコントロール
  • プロジェクトの作成
  • ユーザーコントロール MeterSlide のXAML作成
  • コードビハインドで目盛りとアニメーション設定
  • テスト用アプリの作成
  • まとめ
続きを読む

WPFのChart作成ライブラリーOxyPlotの使い方

WPFでChartグラフを表示するためのライブラリーに OxyPlot があります。その使い方について書いておきたいと思います。

  • OxyPlot のダウンロード
  • ExampleBrowser
  • WpfExamples
  • バインドの方法
    • バインド用ラインデータの準備
    • Blend で Chart 作成する方法 (Plot)
    • ViewModel から Chart を作成する方法 (PlotView)
  • 参考
続きを読む

Prism を使用したComposite Application の多言語対応

PrismのWPFアプリを多言語対応する方法の例を書きたいと思います。多言語化ライブラリーとして WPFLocalizationExtension を使用し、.resx ファイルを使用した切り替えを行います。使用している環境は Win10, Visual Studio Community 2017, Prism.WPF V7.1.0.431, .NET4.5.2, DIコンテナとしてUnity が使われています。

  • WPFサンプルソフトの準備
  • WPFLocalizationExtension の導入
  • resxファイルの追加
  • ResX Manager
  • 文字列のバインド
  • アプリの動作
  • まとめ
  • 補足
続きを読む

WPFでのプログラミングスタイルMVVMをユーザービリティー開発から考える

Windows のアプリをWPFを使用して作るときにはMVVMというデザインパターンを使用する事が多いと思いますが、MVVMを考える時、プログラマー視点で考えてしまうと、形だけはMVVMだけれども、手間だけ増えて何のために分けたんだっけという情けない状態になりかねません。アプリを使う人の為のユーザビリティー開発のためのデザインパターンであるという見方から考えると、どういう風に分けたらいいかの指針となると思います。

続きを読む

fast.ai で deep learning を勉強しよう(1)準備

Practical Deep Learning for Coders, v3 のサイトで Deep Learning を勉強しましょう。

  •  fast.aiとは
  • 環境構築: Win10
    • Anaconda インストール
    •  GPUを使用する場合
  • fastai用仮想環境の作成
    • (option)Anaconda に Proxy設定が必要な時
    • 仮想環境作成(ベースからコピー)
    •   fastai のインストール
    •  Pytorch のインストール
    •  jupyter の拡張機能インストール
    • (option)jupyter に Proxy設定が必要な時
  • Lesson1 準備
    • Part1 notebook のダウンロード
    • windows用に修正
  • 環境設定での不具合対処方法
  • GPU使用有無の確認方法
  •  Jupyter Notebook での Home の変更方法
続きを読む