1 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 03:17:20 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 前スレ C#, C♯, C#相談室 Part59 pc12.2ch.net/test/read.cgi/tech/1274019232/ Visual C# 2010 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>1-5 くらい
193 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:11:03 ] 隠蔽はあるだろ… タスクマネージャのタスク一覧を直接弄って消すのは10年前のウィルスですらやってる事 今はサービス、他社のタスク一覧まで消す奴もある
194 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:11:45 ] 常駐させずにタスクスケジューラに登録しとけ
195 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:17:16 ] >>194 おまい、天才だな・・ サンクス
196 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:18:25 ] >>190 そいつの心臓が弱くていきなり出たメッセージに驚いてポックリ逝ったら責任とれるのか?あ?
197 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:18:51 ] >>190 本人に直接言え。
198 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:19:09 ] >>196 スキルのねぇカスはひっこんでろ
199 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:20:33 ] それはキモいというか、普通にそんなことされたら嫌だろよ。
200 名前:196 mailto:sage [2010/07/03(土) 20:22:38 ] >>198 176も178も私ですけどスキルがなくてすいませんねえ
201 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:23:20 ] タスクマネージャの心配はするのにタスクスケジューラはOKってどういうことだよw 確かにタスクスケジューラなんてまず使わないけどな。 俺に言えるのは、100%確実な方法はないってことだな。 パソコンの操作を全部記録するようなソフトを入れてないとも限らないし。
202 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:25:29 ] >>201 普通、タスクスケジューラなんて使わないよな? ちょっと不安になってきたw 操作を記録するソフト入ってたら無理だなw
203 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:28:44 ] 勝手にアプリを入れさせるようなレベルなんだし、 スタートアップに置いといてもばれないんじゃね?
204 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:31:04 ] スタートアップに入れておけ。 誕生日に起動した時だけダイアログを出して他のタイミングは即座に終了して消えるようにする。
205 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:33:25 ] スタートアップはたまに覗いたりしないか?
206 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:34:35 ] svchost.exeって名前にしとけ
207 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:35:44 ] >>200 事実は事実
208 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:43:33 ] >>190 誕生日はお前以外の相手と一日中デートしててPCを起動しない可能性は? カーチャンとかだったらごめん
209 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:51:35 ] >>187 そりゃMVVMじゃなくて君が開発した別のパターンだ。 MVVMに関するMSの記事のどこを見てもそんなことは書いてない。 もちろんWPFはそのパターンを公式にはサポートしてない。頑張るのは君だ。
210 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 21:00:56 ] >>209 えー だってMVVMのパターンの概要を見るとViewとViewModelの分離の事は書かれてるよね この疎結合の副作用を利用して差し替えをしてるだけであって完全マイルールってわけじゃないよー それにイベントハンドラを書くのは結合度の観点からも勧められないと著名人達は口を揃えて言ってるよん 誰かAdorner何かを使ってTextBoxをマスク処理してるコードを格好良くみせてくれないかなーとか期待してたんだけど無理かなぁ
211 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 23:16:45 ] WPFしらんのでテキトーだけど、UserControlをアダプタとしてPasswordBoxのせて、 仲介してもらうとかできない?
212 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 23:20:00 ] >>211 ググるとそのやり方をやってる風なコメントがあるよねー んー、やっぱりその方法がいいのかな と言う前に、やってみるか!
213 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 23:45:58 ] >>212 うむ。そうするのじゃ
214 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 00:08:00 ] MVVMにこだわるんだったらそのUserControlのためにまた別のViewModelが必要だから UserControl作ったって同じことでしょ
215 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 00:09:26 ] おぬし、ViewModelを勘違いしとるぞい
216 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 00:10:07 ] というと?
217 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 00:13:29 ] なんで別のViewModelが必要と思ったの?
218 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 00:54:11 ] ViewModelを差し替えたいならせめてインターフェイス通すべきだろ 実際のバインディングの動作には全く関係ないけどね 公式サンプルのPrismはViewがViewModelをインターフェイス経由で露に参照してる 差し替えたりしてはいないけど、バインドするVMのメンバは基本的にインターフェイスに宣言されてる
219 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 01:04:25 ] Prismをかなり使い倒してるんだがそんなインターフェイスでViewとViewModelを繋いでるサンプルなんてあるか? RegisterTypeでIDataService何かのサービスをレジストしたりするのはよくやるが
220 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 01:44:52 ] 素人としては、ViewModel をストラテジパターンの要領で差し替えて使ってると 認識してて、そうなるとインタフェース必須だと思ってるんだけど違うの?
221 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 02:07:06 ] Prismにしろ何にしろViewModelにインターフェイスは使えないだろjk RoutedUICommand一つとってもViewModel側にstaticで定義しないと駄目なんだぞ?
222 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 02:08:56 ] あ、インタフェースって言ってもViewModelから呼ばれるストラテジのインタフェース って意味で。 そういう感じで作ればXAML共通で、VMの実処理だけ差し替えられるよな?と。
223 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 02:10:11 ] つまりどういう事だってばよ!?
224 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 02:22:57 ] つまり、固定のViewModel と、固定の Model の間で検証したりするロジックが いくつかパターンがあるんで、それをアダプタ化して差し替え可能にしてるって ことじゃね?>>187 は。
225 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 02:25:42 ] とか思ったら PasswordBox 悩む必要無さそうだな、それじゃw
226 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 02:48:34 ] BというクラスがあったとしてAクラスで A hoge = new A(); というように実体が作られたとします。 そこでBクラスがAクラスで実体が作られたという事を知ることはできないでしょうか? Bクラスのコンストラクタで作られたクラスを取得したいです。 引数にでもして入力すればいいとも思うのですが自動でとれたら便利だと思いました。お願いいたします。
227 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 02:49:20 ] A hoge = new A(); は B hoge = new B(); です、失礼しました
228 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 02:54:04 ] ttp://msdn.microsoft.com/en-us/devlabs/ee794896.aspx これ使ってObserverを使う
229 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 07:17:08 ] どうもどうも〜
230 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 11:07:45 ] Rxってイベントベースじゃなかったっけ? A側にもB側にも特別なコードを追加せずにnewを検知しようと思ったら ILのリライトしかないと思うけどそんなことやってくれるの?
231 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 12:07:23 ] >>230 Rx 進めてる時点で、>>229 はそういうイベントコード書けって事だと思うけど。 ぶっちゃけ、それなら、class B に static な NewInstance イベントでも足して、 B のコンストラクターでイベント起こせせばいい気はする。 特別なコード足したくないならそれは無理。
232 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 12:46:38 ] IEnumerable,yield,ToObservableで簡単に実装出来るけどな ただRx強力かつ難解なんで上級者でも中々手がない代物 複数人の開発じゃ手が出しにくい
233 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 12:47:31 ] ×ただRx強力かつ難解なんで上級者でも中々手がない代物 ○ただRxは強力かつ難解なんで上級者でも中々手が出せない代物
234 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 12:58:47 ] イベントベースの非同期プログラミングが面倒だから LINQ使ってDSLっぽくイベントハンドラを作ろうというやつだよね そんなに難しいの?
235 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:10:36 ] うーんどうだろ。 Rx が難しいっていうよりは、C# のイベント機能が簡単すぎる気もする。 あとは、やっぱドキュメント少ない。
236 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:22:00 ] using System; using System.Diagnostics; namespace OnCreate { class B { static event Action<Object, EventArgs> Created; public B() { OnCreated(new EventArgs()); } void OnCreated(EventArgs arg) { if (Created!=null) { Created(this, arg); } } static void Main(string[] args) { Created += CreateEventHandler; B b = new B(); } static void CreateEventHandler(Object obj, EventArgs arg) { Console.Out.WriteLine(new StackTrace().ToString()); } } } とか言ってみるテスト。スレッドセーフじゃないよなぁこれは。
237 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:24:37 ] Rxはおもしろ事が出来そうなんだけどドキュメント少ないし やっぱり非同期系は難しい Rxよりはいるけど.Net4の並列系も使いこなしてる人がすくないよね
238 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:26:15 ] ttp://sazameki.jp/programming/programmer-levels C#じゃないけど、それとなく当てはめてみて おまいらはどのレベルなの?
239 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:29:53 ] それ微妙に納得いかないのよねぇ。 レベル1とかのプログラミングの基礎知らなくても、 専門知識だけ持った人が専門知識を生かせるような簡単プログラミングの時代来ないとダメだ。
240 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:30:44 ] Rxでいう非同期はマルチスレッドの非同期じゃなくて 同期スタイルなら { キーが押されるまで待機(); A(); キーが押されるまで待機(); B(); }と書けるところを キーイベントを使った"非同期"スタイルだと状態を保持する変数を持たないといけなくて面倒だよねという話
241 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:32:31 ] >>238 それで行けば専門家レベルだな 基準がぬるいよ
242 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:36:00 ] >>240 その状態を保持しながら通知するから便利なんだろ? 簡単に言えばステートフルな非同期処理 だから強力なのさ
243 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:38:52 ] >>238 これの初級レベルでここや初心者用で質問したら ググれと言われて相手にされないだろwww と思ったけど大学4年以上いっても初級レベルの奴がゴロゴロいるよな…
244 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:49:26 ] >>236 void OnCreated(EventArgs arg) { var created = Created; if (created!=null) { created(this, arg); } } これでスレッドセーフ? 関係ないけどイベントハンドラ用のデリゲートを作りたくなかったらEventHandler<TEventArgs> それと引数なしのEventArgsはEventArgs.Emptyを使う
245 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:51:38 ] > var created = Created; そのテクニックどっかでみたな? どこだっけ?
246 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:59:09 ] >>244 >スレッドセーフじゃないよなぁこれは。
247 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 14:07:55 ] じゃあスレッドセーフにしてくれ ロックはなしで
248 名前:245 mailto:sage [2010/07/04(日) 14:19:44 ] あー思い出したわw MSDNだ、そうそうw ttp://msdn.microsoft.com/ja-jp/library/ms173168%28VS.80%29.aspx で、横からだけどスレッドセーフ public event EventHandler<EventArgs> Created = (_, __) => {} こいつはPropertyChangedなんかで使われるテクニックだわな (Week何とかつかえとかPrism使えとか言われてるけどw) まー、このケースで言えばこれでOKだろ さぁ、俺を褒め称えよ!w
249 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 14:26:00 ] 245△
250 名前:245 mailto:sage [2010/07/04(日) 14:34:44 ] >>249 なはw 律儀にあんがとさんw
251 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:10:24 ] すまん。>>244 の"スレッドセーフ?"と言ったのを、 >>236 の最後を見落としてて 揶揄してるんだと誤解してた。スレッドセーフにしてくれてたのね。
252 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:19:27 ] いいよ気にしないで 慣れてるから
253 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:29:03 ] >>244 これってなんでスレッドセーフになるの? 解説を聞きたい!
254 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:29:43 ] >>248 public event EventHandler<EventArgs> Created = (_, __) => {} これもなぜこれだけでスレッドセーフになるのかわからにぃ
255 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:32:20 ] >>253 null比較がスレッドセーフではないからローカル変数に一時待避でスレッドセーフ >>254 null比較しなくていいように前もって空イベント挿入でスレッドセーフ また、△ってしてもいいんだぜ!
256 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:36:57 ] >>253 if (Created!=null) { /* この間に別のスレッドがイベントを-=してCreateをnullにする可能性がある */ Created(this, arg);
257 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:43:18 ] はあ・・・また自演っぽいな
258 名前:fushianasan mailto:sage [2010/07/04(日) 16:46:58 ] 別に自演じゃないよ。 ホントにわかんないだけ。
259 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:50:31 ] >>256 var created = Created; Created-=********** --この時点でcreated -= ********* したのと同じことにはならないの? 参照型でしょイベントって。
260 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:58:33 ] add/removeしたら別オブジェクト a += b;は TDelegate c = (TDelegate)Delegate.Combine(a, b) a = c; の略で、このとき Object.ReferenceEquals(a, c)もObject.ReferenceEquals(b, c)もfalse
261 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:59:26 ] 君は var objA = new object(); var objB = objA; この時どうなると思ってんだ? ちゃんとポインタ(厳密には違うけど)はコピーされてるんだぞ
262 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:59:42 ] ならないの。デリゲートはStringと似たつくりになっていて、一度作成したインスタンスは変更できない。 イベントの実装はこうなってる private EventHandler _Created; public event EventHandler Created { [MethodImpl(MethodImplOptions.Synchronized)] add { _Created = (EventHandler)Delegate.Combine(_Created, value); } [MethodImpl(MethodImplOptions.Synchronized)] remove { _Created = (EventHandler)Delegate.Remove(_Created, value); } } [MethodImpl(MethodImplOptions.Synchronized)]のおかげでaddアクセサとremoveアクセサの呼び出しもスレッドセーフ。
263 名前:253,254,259(261は別人) mailto:sage [2010/07/04(日) 17:27:30 ] >>260 ,>>262 解説ありがとう。 参照型だけど毎回インスタンスが生成されるクラスなんですね。 理解しました。
264 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 17:39:38 ] 何読んだらそう言うのがわかるようになるの?
265 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 18:47:37 ] >>255 > null比較がスレッドセーフではないから そういう話じゃないような
266 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 19:01:53 ] >>265 うん、間違えたw
267 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 22:59:50 ] あほか。nullはスレッドセーフだわ、ボケ。
268 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 01:22:17 ] えっ?
269 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 01:44:53 ] >>244 実はECMAの仕様ではスレッドセーフではなかったり。
270 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 03:05:16 ] 完全なスレッドセーフなど存在しない
271 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 03:07:36 ] しかしlockを何個も書くのはかっこ悪いしめんどいんだが このオブジェクトは最初から排他仕様だからよろしくみたいなことは出来ないのか?
272 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 10:20:28 ] 比較自体はスレッドセーフじゃないからあながち間違いではないけどな
273 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 13:46:46 ] は?
274 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 14:22:32 ] >>272 だよな 間違ってないよな さすがだな
275 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 17:20:35 ] え? obj = nullは常にスレッドセーフだよ? あと obj = 0とobj = falseもさ 大丈夫?あぁネタかw
276 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 17:24:40 ] ほ?
277 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 18:27:47 ] それがどうであるかと>>244 がなぜスレッドセーフなのかはまるで関係ないよね。
278 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 18:57:15 ] >>275 obj = ""が抜けてるよ♪
279 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 22:54:43 ] >>277 >>244 がスレッドセーフであることの前提条件ではあるだろ
280 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 00:39:11 ] C#でDllMainって使うにはどうしたらいいかわかるひといる?
281 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 00:45:48 ] うん
282 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 00:49:24 ] >>281 マジで知ってるなら教えて下さいm(_ _)m
283 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 01:45:26 ] >>282 COMコンポーネントあたりでぐぐってみるといいよ サムネイル表示するのをWindows7に移植しようとC#で作ってみたが その時にそんな感じのことをした気がする 結局動かなくてテストに毎回再起動するのがまんどいので放置してるが
284 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 02:58:32 ] >>279 いや、そんなことないが。落ち着け。
285 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 03:03:12 ] とまぁ、えらそうに申しておりますが、俺も>>248 >>262 で初めて知り、 >>265 のツッコミをした程度のへっぽこです。 知らなかったらlockステートメント使ってたと思う。
286 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 03:30:32 ] んなこたあどうでもいいから>>282 に教えて上げなさい
287 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 03:39:33 ] 質問が曖昧すぎて回答できません
288 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 03:43:35 ] とりあえずクラスライブラリとかDllImportとか曖昧回答して上げなさい
289 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 03:46:10 ] ぐぐったら少ないけど情報出てくるね。
290 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 10:41:53 ] デッドロックの恐れがあるからCLR2.0以降では禁止されているという話らしいよ
291 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 12:48:59 ] 約束は破るためにあるっちゅうことやな
292 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 13:06:04 ] ところでこいつを見て欲しい。どう思う? ttp://www.atmarkit.co.jp/fdotnet/extremecs/extremecs_22/extremecs_22_02.html Observerの変形と言えなくもない気がするが、状態オブジェクトが焼け太りしそうな悪寒。 実際んとこ、コレどんな場面で有効だと思う?
293 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 13:31:43 ] Observerとかいう次元じゃなくてアプリケーション全体の構造の話でしょ ステートが絶対に変化しないならいいんじゃないの 素直にやったら全部グローバル変数と変わらないから、テストのことを考えると IProductsStateとかインターフェイスで小分けすることになるだろうけど インターフェイス使っちゃうと後で変更がきかないよね