[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 04/09 11:51 / Filesize : 214 KB / Number-of Response : 894
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

VB.NET質問スレ(Part31)



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のガイドラインで決まってることだから黙って従え






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<214KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef