« USB-MIDI foot controller / USB-MIDIフットコントローラー作った | トップページ | スリムで使いやすいボイスレコーダー SoundPEATS Nano6 レビュー »

2018年3月 7日 (水曜日)

Windowsの延長実行 ExtendedExecutionSession

 UWPのプログラミングの話。UWPのプログラムでは、ウィンドウを最小化したら処理が止まるなあ、と思っていた。2年ほど前にWindowsプログラミングをふとした思い付きで始めた時の話だ。とりあえず、考えていたやつができたので、それ以上のことは気にしないことにしていた。

 そんな、あまりにも今さらな話題ですみませんな話。Windowsプログラミングを知ってる人には、当たり前すぎてくだらない話かもしれませんが。

 C#プログラミングでUWP(雑に言うとWindows 10専用、ストアでリリースできるプログラム)。最小化で止まる。でもって、つい最近。気になって調べてみたら、それを解決する方法があるらしい。最初にやったのはバックグラウンドタスクというやつ。Creators Updateから簡単になったというので試したのだけどうまくいかず。がっかりな結果に。いまだにC#の基本がわかってないので、説明を見てもほぼ理解できず。サンプルのコードを、現在動いているアプリにつっこんでも、思ったようには動かず。

 次に、Template 10というのを使えばいいという情報を見つける。ライブラリというかテンプレートを使えば、何も考えずに、最小化しても動作を続けるという。そんなうまい話があるのか! と感動して、なんとか突っ込む。サンプルのコードをcsファイルに入れ込む。それだけではだめで、xamlもいじらないといけなかった。なんとかエラーを出すことなくビルドでき、プログラムは動く。しかし、最小化すると動作は止まっている模様。残念。

 それから、そのTemplate 10が使っているのはExtendedExecutionSessionというUWPの機能だということを理解。それまでにも何度もドキュメントを読んでいたのだけど、Template 10をちょっと触った後だと理解が進んだのか、うまいこと時間もかからず既存のプログラムの改変が完了。コンパイルして実行。

 サンプルはタイマーをトーストでトリガーするというもので、確かに10秒ごとにトーストが出る。

 しかし、自作のプログラムは思った通りに動かない。

 そのプログラムはMIDIberry。任意のMIDIポートから別のMIDIポートへデータをスルーするブリッジ的なアプリだ。Bluetooth MIDIデバイスをWindowsで使えるするようにするもの。Windows内蔵のMicrosoft GS Wavetable Synthを鳴らすこともできる。

 それが鳴らない。

 BLE-MIDIアダプタを付けたMIDIキーボードをつなぐと、GS Wavetable Synthで音が鳴る。最小化すると、音が止まる。

 プログラミングのミスか。理解が足りないのか。いろいろ考えた。

 そこで気づいた。

 ほかのデバイスに出力したらどうなのか? iPod touchをrtpMIDI経由でつないでみる。rtpMIDIネットワークでMIDIをやりとりできるアプリだ。

 その結果。普通に鳴る!

 最小化してもちゃんと動作してる。思った通りの動作だ。

 つまり、動作が止まっていたのは、GS Wavetable Synthだけだったのだ。MIDIberry自体は動作していたのだ。

 がーん。

 じゃあ、その前の段階でも実はMIDIberry自体は最小化しても動いてたのじゃないか。と思って、その時点でのコードをもう一度コンパイルして実行。GS Wavetable Synthじゃなければ、同じように動いてた。むー。時間返せ。

 ということで、なんとか形になった。

 マイクロソフトのドキュメントはここにある。

 延長実行を使ってアプリの中断を延期する - UWP app developer | Microsoft Docs

 わかる人はこれだけですぐわかるんだろう。  10回くらい読んでやっと自分のプログラムに入れることができた。

 やっぱりC#の基本をちゃんと勉強しなきゃならないと、改めて思った2018年3月。

 Windowsプログラミングについて調べると、ほんと昔の話から知らないと理解できないようなことばかりで、かなりハードルが高く感じる。今から始める若者はどうしてるんだろう、と思わないでもないです。

 この本でも買ってみようかと思う。

かずきのUWP入門かずきのUWP入門


|

« USB-MIDI foot controller / USB-MIDIフットコントローラー作った | トップページ | スリムで使いやすいボイスレコーダー SoundPEATS Nano6 レビュー »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/35726/66471506

この記事へのトラックバック一覧です: Windowsの延長実行 ExtendedExecutionSession:

« USB-MIDI foot controller / USB-MIDIフットコントローラー作った | トップページ | スリムで使いやすいボイスレコーダー SoundPEATS Nano6 レビュー »