VB.NET質問スレ (Part10 ..
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
545:デフォルトの名無しさん 皇紀2665/04/01(金) 15:17:50 文字列を指定したキーで暗号化してくれる関数を探しています。 もしご存知のかたがいましたら教えてください。 こんな感じで・・・ private function 文字列暗号化(byval s as string, byval key as string) as string 546:デフォルトの名無しさん 皇紀2665/04/01(金) 15:27:24 ありました。 547:デフォルトの名無しさん 皇紀2665/04/01(金) 15:28:25 >>544 > デリゲートを使用しているのですが、これはなぜでしょうか? Invokeを使うから。 デリゲートというのは、メソッドそのものを変数に代入できるようにしたもの。 そうすることで、例えばデリゲートを引数に取るメソッドを書くと、そのメソッド先で“デリゲートで指定されたメソッド”を実行できるようになるわけ。 で、Invokeメソッドはデリゲートを引数に取るから、デリゲートを作ってるわけ。 InvokeメソッドはForm(の基底クラスのControl)に実装されたもので、 「“自分を作ったスレッド”で、“渡されたデリゲートで指定されたメソッド”を実行する」 という働きをする。 デリゲートもクラスの一種なんだけど、宣言すると自動的にBeginInvoke/EndInvokeと言うメソッドが追加される。 これが非同期デリゲートと言って、BeginInvokeを呼び出すとそのデリゲートに指定されているメソッドが別スレッドで実行される事になる。 んだけれども、この場合は関係ない話なので、非同期デリゲートの事は棚に上げておいて良い。 あと一応フォローしておくと、「非同期で実行」=「別スレッドで実行」。 > 普通にButton1.Enabled = true とするとどうなってしまうの? なぜInvokeを使うか、というのの詳細は面倒なので省略。 ・必ずコントロールを作成したのと同じスレッドで操作しなければならない ・作成スレッドと同じスレッドで操作するのにはそのコントロールのInvokeまたはBeginInvokeを使う ・その操作処理はデリゲートでラップしてInvoke/BeginInvokeの引数に渡す という点だけ覚えればいい。 そうしない場合、「何が起こるかは保証されない」。
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
4996日前に更新/240 KB
担当:undef