1 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 17:44:56 ] 前スレ VB.NET質問スレ(Part30) pc12.2ch.net/test/read.cgi/tech/1242522019/l50 テンプレは>>2 〜
321 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 17:56:58 ] >>319 同意
322 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 18:03:26 ] >>319 すいません。 プログラムを操作中に、プログラムの操作(ボタンをクリックするとか)以外をしないように出来ますか?という事です。 やっぱりできないですかね?
323 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 18:16:47 ] >>322 一番簡単なのは、昔のインストーラーでよく使われてた、 タイトルバーがないウィンドウを最大化してしまう方法かね。 もちろんこれではウィンドウズキーまでは抑止できないけど。 システムモーダルなんて方法もあった気もするけど、ドトネトのWinフォームは システムモーダルに対応してなかったはず。 というか、そもそも普通はそんなアホな仕様のプログラムはありえないと思う。 本当にそんなアホな仕様が必要なのかね。 9割り方君がそう思い込んでるだけだと思うよ。
324 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 18:21:38 ] >>323 どうしてもアドミニストレータが入ってくるのを抑えたくて、その方法がこれしか思いつかなかったんです。 やっぱ最大化しかないですかね。ウィンドウズキーがありますからね… ありがとうございます。
325 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 18:24:12 ] Administrator うんぬんはまた別の話だろ。 何をやりたいのか、まったく理解できないけど。
326 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 18:31:11 ] >>325 アドミニストレータは制限付ユーザーのパスワードが分かってしまうので、ばれないようにしたかったんです。 でも無理みたいですよね。ありがとうございました。
327 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 18:34:47 ] そりゃ、クラックすればわかるし、パスワード変更はできるけど、 VB とはまったく関係ない話。
328 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 18:45:17 ] プログラム実行中はできなくしたとしても、プログラム終了させたらできちゃうから意味なくね?
329 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 18:55:04 ] >>327 ごめん、なんでそんな仕様にするの?って聞かれたから理由を言ったんだ >>328 パスワード入力して正しくない場合は、×押したときに強制的にキャンセル
330 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 18:56:59 ] だから GINA で作れって言ってんだろハゲ
331 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 19:02:15 ] なんでそんな仕様にするの?って聞かれたから理由を言ったんだ。キリッ じゃねーよw
332 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 19:15:52 ] システム部を持たない会社が「おい、おまえパソコン詳しいよな」みたいなノリで 社員に社内向けツールを作らせようとするとそんな要求仕様になりやすいな(経験者談)
333 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 19:20:12 ] まあ、率直にいってそういうことがしたいなら、 今はUSBドングル使ってシステムをロックする製品なんてのもあるみたいだから そういうのを使った方が確実だろうね。 それ以前に、まあ普通は隠蔽したいものは何らかのデータなんだろうから、 そういうことなら暗号化すりゃいいだけだね。 しかし、そんな信頼できない奴がシステム管理者ってのがそもそも間違ってる気もしますが。
334 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 20:39:25 ] >>330 ごめんそっち勉強するよ。 >>331 いやそんなつもりはw とりあえずできないのはわかったんでやめます。 ありがとうございました。
335 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 21:34:44 ] すいません 教えてください マウスの移動で線を描画したいのですが pictureboxでdrawlineで書いていますが 太さを1以上にすると 汚い描画になります、VB6のときはこんなことはなかったのですが、どなたか教えてください
336 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 21:36:30 ] Graphics のプロパティをいろいろ調べてみれ。
337 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 22:57:22 ] >>336 SmoothingMode はいくつか試しましたが、だめでした。 太さを大きめにすると目立ちます なぜだろう? もっと違うところ?
338 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 23:59:51 ] これ見てダメならあきらめろ。 dobon.net/vb/dotnet/graphics/antialias.html
339 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 00:07:04 ] >>338 いっちゃ悪いけどそういうトンマな回答もどうかね。 「VB6のときはこんなことではなかった」と言っているから、 そういう問題ではないはずだ。 >>335 「汚い描画」なんていう抽象的な表現では誰にも問題が正確に伝わらない。 こういう場合は(というよりほとんどの場合そうあるべきだが)くどいぐらいに 具体的に君の問題を表現しなきゃダメだよ。
340 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 00:13:13 ] >>339 わからないならレスしないでください。
341 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 00:34:38 ] 御託はいいからコードを出せ、ってことだな。
342 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 00:36:18 ] まず問題あるっていうコードを出すのがスジだな。
343 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 03:04:53 ] 汚い描画してるからじゃね?
344 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 07:08:26 ] >341 Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove 'position Dim POS_X As Integer Dim POS_Y As Integer Dim g As Graphics g = PictureBox1.CreateGraphics() ' Create a new Pen object. Dim Pen As New Pen(Color.Green) ' Set the width to 10. greenPen.Width = 10 If e.Button = Windows.Forms.MouseButtons.Left Then g.DrawLine(Pen, POS_X, POS_Y, e.X, e.Y) End If POS_X = e.X POS_Y = e.Y ' Dispose of the custom pen. Pen.Dispose() End Sub
345 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 07:10:04 ] >344 一部ミス Public Class Form1 Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove 'position Dim POS_X As Integer Dim POS_Y As Integer Dim g As Graphics g = PictureBox1.CreateGraphics() ' Create a new Pen object. Dim Pen As New Pen(Color.Green) ' Set the width to 10. Pen.Width = 10 If e.Button = Windows.Forms.MouseButtons.Left Then g.DrawLine(Pen, POS_X, POS_Y, e.X, e.Y) End If POS_X = e.X POS_Y = e.Y ' Dispose of the custom pen. Pen.Dispose() End Sub End Class
346 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 09:50:06 ] ボリューム・シャドウ・コピーをVB.NETで行うには どうやったらいいでしょうか?
347 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 17:58:49 ] Dim threads(n) As Threading.Thread threads(0) = New Threading.Thread(AddressOf Foo) threads(1) = New Threading.Thread(AddressOf Hoge) ・・・ For Each thread As Threading.Thread In threads thread.IsBackground = True thread.Start() Next でスレッドを作っています。 この後どれかのスレッドが終了するまで待って、その後全てのスレッドを終了させるにはどうしたらいいでしょうか? (WIN32APIでいうところのWaitForMultipleObjectです)
348 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 01:22:31 ] TrackBarコントロールでマウスをクリックしたときに、 その座標が目盛りのいくつなのかを取得したいのですが、 方法を御存知の方、いらっしゃいましたら教えてください。
349 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 03:07:38 ] スレッド自体からはWaitHandle取れないみたいだから、 ManualResetEvent1個用意しといて 各スレッドは終了時にSet かつ随時タイムアウトなしでWaitしてSetされてたら終了 呼び出し側は単にWait でいいんじゃね? まあ効率を気にするなら各スレッドでのチェックのために 終了フラグ一個追加した方がいいかも知れんが。
350 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 03:08:28 ] >かつ随時タイムアウトなしでWaitしてSetされてたら終了 タイムアウトなしじゃなくて0指定の間違い。
351 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 11:03:31 ] オレはそんなに沢山のスレッドを作って何がしたいのかが知りたい
352 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 12:33:25 ] そんな面倒なことしなくてもベタにやるだけだと思うけど・・・ 全スレッドを終了するメソッドを用意して、各スレッド内の処理の最後で それを呼び出すようにするだけじゃん。 悩むような問題かね。
353 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 15:31:50 ] MSChartでY軸を右側にしたいのでYAxisTypeをSecondaryに設定すると AxisY2.MinimumとMaximumは自動でセットされないんだね。 Primaryなら自動でセットされるのに。 これって仕様? なんか理由があるんだろうか?
354 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 16:02:16 ] >全スレッドを終了するメソッドを用意して、各スレッド内の処理の最後で >それを呼び出すようにするだけじゃん。 そのコード書いてみな。 絶対問題ありのコードになるから。
355 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 16:26:19 ] >>354 そりゃトンマなお前さんが書けばそうなるんじゃないの。 俺に言わせりゃ、こんなので問題起こす奴の方がオカシイと言わざるを得ない程度の、 超初歩的な内容だと思うけど。
356 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 16:28:52 ] >>353 事故レスだけど IsStartedFromZeroの設定でした^^;
357 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 16:30:29 ] >>355 だから書いてみてよ。 全部のスレッドを終了するメソッドを問題ないように書いてみなよ。
358 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 16:39:46 ] >>357 逆にチミが「問題」が発生するコードを書いてみれば?w 俺は馬鹿に説明するためにそれなりに長くならざるをえないサンプルコードを 書くなんてまっぴら御免だけど、ダメなコードのどこがダメでどう直せばいいかを 解説するぐらいの手間は払うよ。
359 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 16:44:20 ] あーつまり書けないのか?かけるんなら書けよ。 超初心者でも間違う方がおかしいコードなんだろ。 すぐ書けるだろ。 俺は>>349 辺りでどうかなって書いたんだからさ。 まあ絶対書かないよな、お前そういう奴だよ。 >俺に言わせりゃ、こんなので問題起こす奴の方がオカシイと言わざるを得ない程度の、 >超初歩的な内容だと思うけど。 いきなりこういう反応をするやつで、自分からまともに何かを示すやつを見たことがない。 何を言ってもはぐらかすだけで、自分からは絶対に書かないんだよ、
360 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 16:46:53 ] 単純に字義通りに取った場合、最初のスレッドの処理が終わったら 他のスレッドの処理が途中であっても終了するということになる。 それを指摘してるんだろ。
361 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 16:49:00 ] >>359 俺は「かけるんなら書くべき」なんていう妙な価値観を持ってない。 もちろん君がそういう価値観を持つのは勝手ではあるが、 その価値観を他人に振りかざして無理強いする前に、君自身が自分の価値観を 実践したらどうなのか。
362 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 16:50:28 ] >>360 誰に向かって何が言いたいの?
363 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 16:55:40 ] >>358 クソワロタ どんなコードをイメージして簡単だと言ったのかなんて>>358 以外分からん
364 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 16:56:30 ] >>362 >352に対して、言葉は正しく正確にと。
365 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:00:25 ] >>364 >>360 がそんな偉そうなことが言えるような文章なのか。
366 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:06:15 ] まあ、汎用的な用途を考えるんじゃなくてスレッドの処理内容を全部自分で書くなら 全部のスレッドを強制終了させるようなコードでもまずまず問題はおこらならいだろうと期待はできるけど、 普通にスレッドを扱うようなプログラムを書くやつは、そもそもスレッドを強制終了させようなんて発想しないよね。 >>349 みたいなやり方を発想するのがごく普通というか常識な感覚であって、 >>352 みたいな発想は出てこない。 >>352 みたいな発想はまともにマルチスレッドのプログラムを書いたことがないようなやつの 典型的な発想パターンだよね。
367 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:10:18 ] >>366 俺はスレッドをアボートする、なんて一言も書いてないが。 先に「問題」があるコードをまず提示しろ、って言ってるのはそのあたりの 微妙な問題もあるからなんだけどね。
368 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:12:21 ] アボートする以外にどうやって全部のスレッドを終了するメソッドを書くのか教えてくれ。
369 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:13:46 ] >>368 だから、そんなものはスレッド内の処理に依存する問題であって、 一意にこうだ、なんて言えない。 だから先に「問題」があるコードを提示しろと言ってる。
370 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:14:17 ] >>367 基地外だなこいつ。 >先に「問題」があるコードをまず提示しろ、って言ってるのはそのあたりの >微妙な問題もあるからなんだけどね。 >俺に言わせりゃ、こんなので問題起こす奴の方がオカシイと言わざるを得ない程度の、 >超初歩的な内容だと思うけど。 おいw
371 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:16:16 ] >>370 意味がわからん。
372 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:19:06 ] >>369 だんだんこいつが何を言ってるのか分からなくなってきた >そんな面倒なことしなくてもベタにやるだけだと思うけど・・・ > >全スレッドを終了するメソッドを用意して、各スレッド内の処理の最後で >それを呼び出すようにするだけじゃん。 >悩むような問題かね。 そのやり方を教えろってんだよ。 >>349 に対して >そんな面倒なことしなくてもベタにやるだけだと思うけど・・・ なんだったらもっとシンプルなべたな方法があるんだろ? スレッドをアボートしない方法でそんな方法は思いつかないが。
373 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:22:34 ] >>372 スレッドをアボートするのとスレッドを終了させることはイコールじゃないよ。 こんなことから説明しなきゃならんのかよ。 例えばスレッドの中身が単純なwhileループなら、外からループ条件をfalseに 設定してやればスレッドは終了する。 っていうか、>>347 の問題とスレッドの終了方法は直接関係がない。
374 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:26:42 ] だからそれってほとんど>>349 だろ? それよりもベタな簡単な方法が、 「全スレッドを終了させるメソッドを最後に呼ぶ」 なんだろ? かつその方法はアボートしないんだろ? じゃあどうすんの?
375 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:28:25 ] >>373 >>349 見たら明らかだがどうみてもそんなこと分かってるっていうか最初からそう書いてる。
376 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:28:27 ] 単純化して言えば、>>347 の問題は>>352 に書いたとおり、 各スレッドを終了させる方法(メソッド)が用意されていれば、 全てのスレッドに対応するそのメソッドを呼び出すメソッドを作って、 それを各スレッドの一番最後の処理から呼び出すようにするだけ。 もちろん、自分のスレッドの終了を待つような馬鹿なミスを犯して デッドロックしないよう注意は必要だよ。
377 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:36:45 ] >単純化して言えば、>>347 の問題は>>352 に書いたとおり、 >各スレッドを終了させる方法(メソッド)が用意されていれば、 >>354 >各スレッドを終了させる方法(メソッド)が用意されていれば、 www そのメソッドを示さないと悩むだろw >悩むような問題かね? ってんだからさ、悩まないようにしてやれよ。 >各スレッドを終了させる方法(メソッド)が用意されていれば、 >全てのスレッドに対応するそのメソッドを呼び出すメソッドを作って、 >それを各スレッドの一番最後の処理から呼び出すようにするだけ。 > >もちろん、自分のスレッドの終了を待つような馬鹿なミスを犯して >デッドロックしないよう注意は必要だよ。 これが、>>349 に対して、 >そんな面倒なことしなくてもベタにやるだけだと思うけど・・・ の面倒なことしないベタなやり方なんだな。
378 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:38:19 ] 一番笑えるのは全部後だしでヒントが出た瞬間に反応してくることだな。
379 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:39:50 ] メインスレッドで終了フラグ立ててサブスレッドは そのフラグが立ってれば終了すればいいんじゃないの?
380 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:42:33 ] >>376 >もちろん、自分のスレッドの終了を待つような馬鹿なミスを犯して >デッドロックしないよう注意は必要だよ。 デッドロックって言葉が思いついたのか? この話の流れでは自分自身の終了を待つなんて状況自体が発生しないはずだけどな。 それとも>>376 のどこかで終了を待つようなコードを書いてしまう可能性があるのかい? どこで書くんだろうなそんなこと。
381 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:47:42 ] 他所でやれ
382 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:47:54 ] >>379 メインからは分からないから終了フラグは立てられない。 だから、終了フラグみたいなのを立てるのはスレッド側になる。 >>349 のようにイベントを使うか、 もしくはフラグだけにしてメインからは全スレッドにJoinするか、くらいだな。 まあイベントの方が普通なやり方だけど。 Joinだと結局全スレッドが終わるのを待つ感じになるからね。
383 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:56:39 ] どう見ても>>352 が素人で病気 以上、終了
384 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 18:25:35 ] >>380 ダメグラマらしい意見だね。 全てのスレッドを終了させるメソッドは、それ自身が終了させようとする スレッドの中の一つから呼ばれる。 スレッドの終了処理は、実際にターゲットのスレッドが終了したかどうかの 確証をするのが普通だから、例えばそれをベタにJoin()を使って行うとデッドロックする。
385 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 18:27:55 ] っていうか、結局起こりうる「問題」って何のことなのかね。 まったく意味がわからん。
386 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 18:33:59 ] 普通じゃないし今回の話でも確証なんて意味がない。 止まらない可能性まで考慮するならそもそもJoinなんて使っちゃダメで 自分自身だからどうという話ではない。 まだ続ける気? なら>>352 の例を示してほしいんだがな。
387 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 19:07:39 ] >>385 >>349 に対して>>352 で面倒なことしなくてもって言ってるんだから しかもスレッドを終了させるって言ってるんだから、 普通に考えればアボートすると言ってるとしか読み取れない。 本来そんな事しないでもすむのにスレッドをアボートするってだけで既に問題ありとされるのが普通。 スレッド使う上での常識としてね。 で、どっちにしても書き方からスレッドに関して素人なのが明らかだから、 コード書かせりゃそれ以外にもどっかに問題あるコードになる可能性が高いと思ってな。 まあ必要ないのにアボートする時点で常識的に問題ありとみなしていいレベルだが。 まさかフラグ立ててスレッド側で監視しつつ終了待機するメソッド作るのが>>349 よりベタとは思わないし、 フラグ立てるだけなら普通スレッドを終了するメソッドとは言わないし そもそもメソッドにするだけで面倒が増えてるだけ。 >>349 ですら面倒で、よりベタとなるとアボートするくらいしかない。 ってのが>>354 の意図。 ああ長い。
388 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 19:15:15 ] まあ正直いうと単に>>354 みたいに書いたら どっかでボロを出すかと思ったのも有るけどな。 >>352 も微妙な問題があるって自分で言ってるんだから、 本人じゃないならあとは>>352 に微妙な問題について聞いてくれよ。
389 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 19:18:48 ] >>387 なーんか2ch脳らしい強引な物の言い方だね。 何度も言うように スレッドの終了 ≠ スレッドのアボート 君が両者をイコールだと思うのは完全に勝手だが、 「俺にスレッドの終了=スレッドのアボートだと思わせるのはお前のせい」 みたいな自己中心的な物言いをされても、「恥を知れ」以外に返す言葉がない。 まあ、>>352 の発言が言葉が足りずミスリーディングなのは認めるけど、 要は、スレッドで実行したい処理をクラスでラップする「ベタ」な方法を取るべきであって、 >>349 的なスパゲティーコードはよくないって事だよ。
390 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 19:31:52 ] お前>>349 のやり方の意味分かってるのか? かなりベタでスパゲッティとかいうようなやり方じゃないぞ。 だいたい>>349 はプリミティブレベルの考え方に近いもので クラス化するとかどう書くかは別にやりたきゃ好きにしろってレベルだぜ。 つかクラスでラップってまたいきなり初めて出てきたな。 >>352 がそういう意図ってお前エスパーでも相手にしてるのか? 流石にそのベタなコードとやらを示してもらわないと分からない。 あっ余計な事言ったか、またループだな。
391 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 19:35:23 ] スレッドで実行したい処理をクラスでラップする、なんていうのは、 「ベタ」、つまり説明不要の定石だから説明しなかったまで。 っていうか、もういいわ別に。 一人かどうか知らんけど君みたいな馬鹿言い負かしても意味ないし。
392 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 19:38:21 ] こんな感じ?待っていれば他のスレッドも終了するという前提だけど。 Static testArr() As Boolean = New Boolean() {False} SyncLock testArr Dim testRes As Boolean = testArr(0) testArr(0) = True If testRes Then Exit Sub End SyncLock For Each thread In threads If Not Object.ReferenceEquals(thread, thread.CurrentThread) Then thread.Join() End If Next testArr(0) = False
393 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 19:53:18 ] >>391 今回は元々やりたい処理がそれぞ別メソッドになってるけど、 それでも「処理」をクラスでラップするのが常識かな? 一般に処理をクラスでラップするのが常識なのは、 処理に必要なデータをクラス側で管理するためで 今回のはどちらかと言えばスレッドの制御をクラスの機能として実装し、 処理はデリゲートとしてスレッド制御のクラスに渡すってのが普通な気がする。 C#なら匿名メソッドやらラムダ式使えばすごいシンプルに出来るんだがな。 今のVBって複数行のラムダ式使えたっけ? 次のバージョンからだったかな?
394 名前:351 mailto:sage [2009/09/26(土) 20:17:09 ] だから〜、沢山スレッド作っておいて一等賞を取ったスレッド以外を 終了させるなんていったい何がしたいんだ〜?
395 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 21:13:59 ] >>391 >スレッドで実行したい処理をクラスでラップする、なんていうのは、 >「ベタ」、つまり説明不要の定石だから説明しなかったまで。 >>347 のでどうやんだよこれ…?
396 名前:347 mailto:sage [2009/09/26(土) 21:22:45 ] 盛りあがってますね >>349 の方法でやってみます。ありがとうございました。 >>351 最小で1つ、多くてもせいぜい3つぐらいなんですけどね>スレッド数 内容は禁則事項です♪
397 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 22:45:23 ] そんなスパゲッティで面倒な方法はだめだ。 >>352 >>376 >>389 >>391 を見てクラスでラップする「ベタ」な方法でやるんだ。 こんなの定石だから>>351 はあえて教えてくれないぞ。 コードができたら問題点を指摘してくれるから見せてみるんだ。
398 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 22:49:50 ] 言っとくがこんな超初歩なところで問題あるコードなんて書いたら ちょっとオカシイってことだからな、超初歩以前に君がおかしくないかがためされるんだぞ。 心してかかるんだ。
399 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 22:54:17 ] そろそろウザイ。
400 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 23:16:42 ] テンプレ Q. 〜のやり方を教えてください A. クラスにラップしてベタに書け
401 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 03:41:35 ] デリゲートでマルチスレッドし、AsyncCallbackでコールバック関数で残りすべてのスレッドを終了させればOK
402 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 09:27:16 ] >>401 BackgroundWorkerでよいのじゃないか
403 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 11:06:32 ] ダメとは言わないが向いてないね。 意味がない。
404 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 13:13:46 ] >>401 AsyncCallback関数の中をどうやって実装するのだろう? なんか振り出しに戻る予感。。
405 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 13:49:39 ] BackgroundWorkerが一番楽だと思う。 WorkerCompleteあるし、CancelAsyncあるし。 >>401 は、どうやってほかのスレッド終了させるんだろう。
406 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 13:50:11 ] 結局大して変わらないよね。
407 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 13:52:23 ] >>405 どっちも大して変わらんて。
408 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 13:55:10 ] Environment.Exit()
409 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 13:56:59 ] VB2008の555だったかの究極?技?何とか言う本 立ち読みしてみたら酷かった。 この手の本はあんま進歩しないなあ。 ちゃんと理解してる内容だけ書けばいいのに。 .NET系って本に間違いが多すぎる気がする。
410 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 13:58:55 ] >>408 それだとプロセスが終了しちゃうじゃん。
411 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 13:59:05 ] >>347 っぽいコードをそれぞれのやり方で書いてみれば どれがやりやすいか、あまり差がないか よく分かると思うぞ。
412 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 15:00:04 ] >>410 >>347 は全てのスレッドを終了させると書いているので間違いではないな。
413 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 15:03:56 ] >>409 ドボンちゃんのサイト等があるのに今どきそんな本を買う人が居るのかね〜?
414 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 16:08:22 ] 詳しく
415 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 20:01:14 ] 継承されるクラスを作成するときに オーバーライドとイベント実装をどこで切り分けていますか?
416 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 20:02:24 ] >>414 ドボンを?
417 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 20:05:00 ] 継承を前提にするんだったらイベントはいらん 継承しないで外からアクションを挿入するためにイベントを使うんだ
418 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 20:15:19 ] >>415 ,>>417 二人とも何を言ってるのか意味不明すぎる。 エスパー同士の会話なのかアーパー同士なのかどっちなんだ。
419 名前:417 mailto:sage [2009/09/28(月) 20:23:03 ] 「継承されるクラスを作成」と書いてあるから,抽象クラスでも作ってるのかと思った たぶん勘違い Formの派生クラスを作ったときにFormのOnPaintをオーバーライドするべきかPaintイベントを使うべきか というような話なら,一般的にはオーバーライドした方がいい(少なくともMSDNにはそう書いてある)
420 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 22:50:51 ] >>419 Formは必ず派生クラスで使うのにOnHogeとHogeイベントの両方があるのかって話し。 実行効率が良いのはOnHogeだけど使いやすいのはHogeイベントかなと。 だったらイベントだけで実装しても良いのではないかと思っただけです。
421 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 23:04:15 ] OnHogeはオーバーライドされるためだけにあるんじゃない。 派生クラスから基底クラスのOnHogeを呼ぶことでHogeイベントを発生させるためにも使われる。 .NETのガイドラインで決まってることだから黙って従え