2013-01-01から1年間の記事一覧

プロパティ変更待機

c#

BindableBaseのPropertyChangedイベントでオブジェクトのプロパティ変更をトリガーにして何らかの処理を行うことはよくあるが、一連の処理の途中でプロパティの変更を待機したい場合、PropertyChangedイベントをどう使っていいのかわからない。 ・・・ if (h…

MessageDialogの連続表示

c#

public static class MessageDialogExtensions { // 最後にContinuousShowAsyncに指定されたMessageDialogのShowAsyncの戻り値 private static Task<IUICommand> _current = Task.FromResult<IUICommand>(null); // 同時にContinuousShowAsyncが呼ばれた時に_currentの変更を同期化す</iuicommand></iuicommand>…

複数のキャンセル待ち

c#

async/awaitで非同期のコードを書いているとCancellationTokenを良く使う。 複数のCancellationTokenを使う場合、「すべて」のキャンセルを待機するにはCancellationTokenSource#CreateLinkedTokenSource()を使えばいいらしいが、「いずれか」のキャンセルを…

円マークの罠

長年この業界にいるが、utf-8に円マークを表す文字コードが2つあることを初めて知った。 0x5Cと0xA5。 0x5Cの方はバックスラッシュに割り当てられているが、表示上だけ円マークになってるんだとか。 今までバックスラッシュと円マークが同じコードだと思って…

時代の流れ

ロータス1-2-3、終了のときが迫る | スラド プログラムにハマッたきっかけはかのLotus1-2-3であった。 まだwindowsの前、DOSで動くやつ。 SLJBEGOBYWBDLBMSBFKGUTGWNKUFNVSDNDLANCKFE みたいなパッと見デタラメなアルファベットの羅列がプログラムとして動く…

Popupの罠

PopupにはIsLightDismissEnabledというプロパティがあって、ユーザーがPopup以外のところを操作するとPopupが勝手に閉じるようにできる。 まあ便利ではあるのだが、キーボード操作には反応しないことが判明。 ケース1 LayoutAwarePageを基にして画面を作って…

隠しコマンド

xperiazにロック画面を回避する脆弱性が見つかったとか。 自分のでも見事に再現。 つかね、これ脆弱性というより隠しコマンドみたいなもんでしょ。 開発側としてはこういうのを仕込みたくなるのもわからなくもないけど、コマンドが流出するとはお粗末極まり…

PreferenceFragmentの使い方

公式開発ガイドのとおりにするとエラーになるんだけどな・・・ public class SettingsActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Display the fragment as the m…

ObservableCollectionの罠

ObservableCollection.InsertでArgumentExceptionが起きる時の回避策。 一覧系のコントロールにObservableCollectionをバインドする時コントロールがObservableCollectionのCollectionChangedイベントにデリゲートを設定しているが、この解除が適切にされな…

asyncとawaitとtaskとthread

超絶勘違いをしていた。 asyncとawaitキーワードを指定して非同期処理をしてもマルチスレッドになるわけではない。 てっきりマルチスレッドになるもんだと思ってた。 その割にスレッドIDが変わらないのは何だかな〜と不思議に思ってた。 asyncキーワードをつ…

インテントでの外部アプリの起動

やりたいことは音楽再生アプリの起動なのだが、検索して出てくるのは特定のファイルを再生させる方法ばかり。 ファイルを再生するのではなく、ホームから起動するのと同じことをしたいのだが・・・ 再生アプリが複数インストールされていればデフォルトのア…

また斬新な

スクエニの会員制サービス、利用規約で「本サービスに対する不満を流布する行為」を禁止に | スラド 口コミで広まる不満てのも運営としては非常に重要な情報だと思うんだが・・・

イベントハンドラのasync

さらに先日書いた記事の補足。 実行されないコードの問題はawait付きの呼び出しではなく、async付きのイベントハンドラのようだ。 private async void OnClick(object sender, EventArgs args) { Debug.WriteLine("hoge1"); await hoge2(); Debug.WriteLine(…

アプリの中断

先日書いた記事の補足。 microsoftのサイトによると、中断というのはosによるプロセス/スレッドのスケジューリングの対象外になることだそうだ。 プログラムからすれば時が止まるのと同義。 先日の記事に書いた、スレッドがフォアグラウンドとかバックグラウ…