C#, C♯, C#相談室 Part92at TECH
C#, C♯, C#相談室 Part92 - 暇つぶし2ch262:デフォルトの名無しさん
17/02/28 00:00:06.65 8+bIkryZ.net
>>251
WPF → UWP という進化だよw

263:デフォルトの名無しさん
17/02/28 00:13:12.42 3lr7jZCG.net
一応最終的には全ての組み合わせが出来ることを目指してるんだろ?
看板付け替えただけ、という見方かもしれんが、俺は進化でいいと思うぞ。

264:デフォルトの名無しさん
17/02/28 00:17:57.53 C4A7F+ay.net
>>251
MFCでだいぶ前からhtml/c++はできるじゃん。

265:デフォルトの名無しさん
17/02/28 19:37:38.52 yxAUZLha.net
テキストファイル中の、特定の行だけを読み込むにはどうしたらいいでしょうか?
読みたい行が何行目かは決まってるんですが、
1.1行目からその行までに含まれる文字数
2.読みたい行からファイルの末尾までの行数
は不定です。
FileStream.Seekの、バイト数ではなく行数指定出来るものがあればいいんですが。

266:デフォルトの名無しさん
17/02/28 19:42:51.05 9Xdv30xY.net
>>257
ループ回して対象行のカウントでホゲホゲすれば?

267:デフォルトの名無しさん
17/02/28 19:44:38.27 yxAUZLha.net
>>258
ありがとうございます。
うまくできました。
StreamReader reader = new StreamReader(file,Encoding.Default);
for(int i = 0; i < 10; i++)
{
reader.ReadLine();
}



268:this.listBox1.Items.Add(reader.ReadLine());



269:デフォルトの名無しさん
17/02/28 20:23:35.47 K7hLR7oh.net
>>259
実践で使えないコード過ぎてイラっときた
気分で改行したら終わりって

270:デフォルトの名無しさん
17/02/28 20:29:23.68 +WocOs48.net
>>260
読みたい行が何行目かは決まってるのに気分で改行したがるその仕様無視にイラっときた

271:デフォルトの名無しさん
17/02/28 20:35:19.50 K7hLR7oh.net
本当はキーワードがありそうじゃん
n行目ってのはあくまで質問者が宿題を読んだ感想文なわけで

272:デフォルトの名無しさん
17/02/28 20:37:44.89 Fq1JMnLG.net
>>262
エスパーさんはいらないから
汎用性のないコードだってのならともかく「本来はこんな問題のはず」とか議論しても何もならん

273:デフォルトの名無しさん
17/02/28 21:08:18.23 pIiGTdLD.net
>>260
どこが実践で使えないんだ(笑)

274:デフォルトの名無しさん
17/02/28 21:15:58.55 wrouDyFM.net
とんちき臭がする

275:デフォルトの名無しさん
17/02/28 21:19:57.27 BFmlECVl.net
ClosedXMLを使って、2行分のデータとスタイル(罫線等)を、任意の2行へコピーしようとしています。
CopyToを使って動かしてみると、マージされているセルなどが思った通りにはコピーされないようです。
worksheet.Range(rowno + 2 + ":" + rowno + 3).CopyTo(worksheet.Range(rowno + 4 + ":" + rowno + 5));
お助けください

276:デフォルトの名無しさん
17/02/28 21:34:46.83 A2md68KB.net
2 + ":"
こういうの気持ち悪い

277:デフォルトの名無しさん
17/02/28 21:59:17.96 39alJvfi.net
>>259
StreamReaderをCloseしようね
内部的には同じだけどFile.ReadLines()を使ってElementAt()とかで目的の行が取れるよ

278:デフォルトの名無しさん
17/02/28 22:08:38.41 s47hQ+GZ.net
>>264
じゃ、お前んとこってテキストファイルの行数でデータ定義するの?

279:デフォルトの名無しさん
17/02/28 22:11:57.45 39alJvfi.net
ログファイルの1行目と2行目はヘッダーだからみたいな定義は十分ありえるだろ

280:デフォルトの名無しさん
17/02/28 22:14:30.88 pIiGTdLD.net
>>269
普通にID管理だけど、チートやバグが発生した場合に行数管理で正常か
どうか判断する局面も有るけど?

281:デフォルトの名無しさん
17/02/28 22:24:32.74 +WocOs48.net
>>269
測定データ1分1行で定義されてて、1日置き=1440行ごと読み出しとか、行数でのデータ取扱なんてざらだよ

282:デフォルトの名無しさん
17/02/28 23:03:34.74 s47hQ+GZ.net
>>272
面倒でも日時入れるわ
データがないとき(?)って空白出すの?
超面倒じゃん
データがないって判定もヤバそう

283:デフォルトの名無しさん
17/02/28 23:10:22.11 AHF/JWRt.net
>>268
ReadLinesは全部メモリに読むから、ファイルがでかい可能性があるなら避けたほうがよいかも

284:デフォルトの名無しさん
17/02/28 23:12:03.23 z/77EZzb.net
メインフレームのシーケンシャルファイル(固定長レコードのバイナリファイル)ですら件数で判断なんかやらねえわ
運用が面倒臭すぎる

285:デフォルトの名無しさん
17/02/28 23:25:18.45 39alJvfi.net
>>274
読まないよ
全部読むのはReadAllLines

286:デフォルトの名無しさん
17/03/01 01:43:58.56 jez9uqUV.net
自分もテキストでハマってるわ。
テキスト読み出しながら、登録したキーワードに引っかかったらreplaceする必要があるんだけど、(足りない脳味噌の範囲で)どうやってもクッソ遅い。



287:キーワードと置換後文字はDictionaryで管理してるけど、そもそもキーワードが8200程ある上に、テキストも1ファイルあたり平均約2.7万文字あってもう無理(テキストファイルは1日あたり1600ほど生産されてる) 速度は諦めるしかない?



288:デフォルトの名無しさん
17/03/01 01:54:31.83 XgpeB6sR.net
>>276
すまん、そうだった

289:デフォルトの名無しさん
17/03/01 04:22:26.99 uGJVx5D1.net
>>277
どのくらいで遅いって言ってるのか次第じゃない?
キーワードにマッチする単位で単語分割できてれば入力の単語単位で辞書にぶつけるのが効率よさそう
ただ3万文字程度ならキーワードの数だけ入力を走査しても言うほど時間かからない気がする

290:デフォルトの名無しさん
17/03/01 07:58:17.12 ElQ6OcG3.net
>>277
キーワードを予め文字単位でツリー化しておいて辿っていけば?
1文字読むたびに最大でもキーワードの最大文字数と同じ数だけのツリーのポインタを1歩進めるだけで済む

291:デフォルトの名無しさん
17/03/01 08:04:58.33 SJrJxNnQ.net
>>268
> StreamReaderをCloseしようね
そこは using だろ

292:デフォルトの名無しさん
17/03/01 08:26:19.47 mkeal5qn.net
トライ木か

293:デフォルトの名無しさん
17/03/01 14:31:13.79 UzmiTiRe.net
System.Net.CookieのDomainについてですが、RFC 6265の4.1.2.3が実現できないように思えます
Domainのスコープを設定するにはどうすればいいでしょうか?

294:デフォルトの名無しさん
17/03/01 15:36:27.74 yuocqMDO.net
キーワード「ねこ・こねこ」があるとき、「こねこ」はどちらに該当する?
また、キーワード「こね・ねこ」があるとき、どちらに該当する?

295:デフォルトの名無しさん
17/03/01 17:28:21.57 9PjUMtQQ.net
初心者質問すみません
フォームにボタンAとボタンBの二つのボタンがあります
ボタンAをクリックすると、ある反復処理が延々と繰り返されます
ボタンBをクリックしてこの反復処理をストップさせるには通常どのような記述をするのでしょうか

296:デフォルトの名無しさん
17/03/01 17:33:43.62 kRYqKFSr.net
>>285
反復処理の中に条件付き中断処理を入れる
もう一つのボタンを押したときに中断処理用のフラグをセットする
もちろん別スレッドじゃないとボタン押せないけど

297:デフォルトの名無しさん
17/03/01 17:36:44.01 kRYqKFSr.net
連レスごめん
反復処理中にApplication.DoEvents入れてもボタンの入力受けるけど
反応悪くなるし、今時はまず使わないだろうな

298:デフォルトの名無しさん
17/03/01 19:13:43.54 1ptPBH8r.net
>>285
CancellationTokenSource cancellationTokenSource;
async buttonA_Click()
{
this.cancellationTokenSource = new CancellationTokenSource();
while ( this.cancellationTokenSource.Token.IsCancellationRequested )
{
await Task.Run( () =>
{
// 何か
}, this.cancellationTokenSource.Token );
}
}
private void buttonB_Click()
{
this.cancellationTokenSource.Cancel();
}

299:デフォルトの名無しさん
17/03/01 19:21:54.77 z3LIBqaM.net
>>279に一票。

300:デフォルトの名無しさん
17/03/01 19:31:02.44 CFmNTLsk.net
>>277
ソース上げたら誰かみてくれるよ

301:デフォルトの名無しさん
17/03/01 19:53:57.57 SJrJxNnQ.net
正規表現に 8,200個も連結して検索させたら死ぬかな?

302:デフォルトの名無しさん
17/03/01 20:31:55.65 r70GDLNP.net
>>291
not Defined

303:デフォルトの名無しさん
17/03/01 21:37:40.58 PGtJZLdC.net
C#から2chに書き込みたいんだけど、
「At2chLib」が使用できなくなってて困っています。
なにか良いライブラリとか有りますか?

304:デフォルトの名無しさん
17/03/01 21:39:56.43 PR7YLHWZ.net
HttpClient

305:デフォルトの名無しさん
17/03/01 21:46:15.04 RAuT14LS.net
荒らしツールは日本では違法だぞ。

306:デフォルトの名無しさん
17/03/01 22:01:49.72 r70GDLNP.net
いやぁ……海外でもダメだろ

307:デフォルトの名無しさん
17/03/01 22:08:23.90 PGtJZLdC.net
荒らしじゃなく、荒らし駆除的なの作りたいんだけどなー

308:デフォルトの名無しさん
17/03/01 22:31:30.38 78O8EuSm.net
荒らしに構う奴も荒らしだぞ

309:デフォルトの名無しさん
17/03/01 22:38:28.52 fB20izlq.net
>>295
違法だったら良いのにな…
もし違法だったらVIPで埋めまくってる奴逮捕されていなくなるはずなのにな…
はぁ…

310:デフォルトの名無しさん
17/03/01 23:00:18.14 U2Od4VRx.net
VIPなんぞ行かなくてよろしい

311:デフォルトの名無しさん
17/03/01 23:13:49.83 fB20izlq.net
ゲ雑…

312:デフォルトの名無しさん
17/03/01 23:57:19.29 6tJnN0su.net
>>287
1処理1個挟むんじゃなくて100処理か1000処理に1回ぐらいでお願いします

313:デフォルトの名無しさん
17/03/02 00:33:44.50 IBdXO0OO.net
>>277
どこが遅いか分析が足りてないな
キーワードにヒットしたら番地とヒットしたキーワード格納して置換はしないでみたら?
置換って頭使わないと最悪な方法で処理してくれてる気がする
abcを見つけたらdefghijkに変換してくれる処理って
c言語だったら変換後の配列のサイズの計算からしなきゃいけないわけで
それをc#ってreplaceしやがったら配列の再確保余裕でしたみたいなことするアホだろ
その辺は考慮に入ってる?

314:デフォルトの名無しさん
17/03/02 00:54:02.49 FuaoIGJx.net
やっとらおまえらも実装してはじめてMSのWordが糞遅い理由を理解してくれたか。

315:デフォルトの名無しさん
17/03/02 00:54:51.19 IBdXO0OO.net
ならば文字列をつなげていくかとして
str1 + str2
みたいなことするとこれも合体後の文字列の長さで配列を再確保する
3万文字もある文字列だと1回文字列連結をするだけでヤバイ
変換に使用するキーワードの使用回数から最終的な文字列の長さを算出する必要があるかも
ってそれも考慮済みだろうか?

316:デフォルトの名無しさん
17/03/02 00:58:24.20 FuaoIGJx.net
string使ってるという馬鹿なオチかよ。これだからC言語できない奴は。

317:デフォルトの名無しさん
17/03/02 01:07:45.83 B13E3oAw.net
アルゴリズムの問題。stringだろうと*だろうと同じだろ。これだから自称C使いは・・・

318:デフォルトの名無しさん
17/03/02 01:09:29.82 FuaoIGJx.net
アホに世界常識を教えてやる。
stringは糞遅い。
だからMSは最初から別のクラスを用意してる。ググレカスども。

319:デフォルトの名無しさん
17/03/02 01:14:29.76 oXaAut0o.net
ボディービルダーになれば良いらしいのか

320:デフォルトの名無しさん
17/03/02 01:18:09.17 iFkNWUjs.net
興味があるならどうぞ StringBuilderのReplace
URLリンク(referencesource.microsoft.com)
URLリンク(referencesource.microsoft.com)

321:デフォルトの名無しさん
17/03/02 01:20:26.39 iFkNWUjs.net
>>308
Replaceのパフォーマンスはそんな変わらないよ
ググレカス

322:デフォルトの名無しさん
17/03/02 01:22:58.33 o9lMs6ta.net
ここはWinFormsだし、10年前のインターネッツだな。

323:デフォルトの名無しさん
17/03/02 01:23:22.99 FuaoIGJx.net
おれがコード書けば瞬殺レベルの高速化できる案件。
最後のヒントな。
大山札

324:デフォルトの名無しさん
17/03/02 02:04:51.98 ggH8M0CB.net
>>313
もしかしてあらかじめ領域を準備して,自分で足していく,とか‥

325:デフォルトの名無しさん
17/03/02 02:30:07.47 4HioNM+3.net
>>299
違法と犯罪は違うぞ

326:デフォルトの名無しさん
17/03/02 02:41:55.30 iFkNWUjs.net
>>313
>>280

327:デフォルトの名無しさん
17/03/02 06:45:07.41 JZiPjSZc.net
言語だのStringBuilderだのという小手先のテクニックの問題ではないだろ
>>280のアルゴリズムで実装したら100倍とかのオーダーで速くなるはず

328:デフォルトの名無しさん
17/03/02 07:40:36.76 WqhQkxL/.net
口だけならなんとでも言え


329:る 実装して計測してコードと計測結果を晒してから主張して



330:デフォルトの名無しさん
17/03/02 07:52:06.73 Ct6l/xwh.net
>>317
280は検索で遅いとき
置換で遅いときはstringbuilderをキッチリサイズ指定する方法でやらないとダメ
まず切り分けかな?

331:デフォルトの名無しさん
17/03/02 08:49:47.79 oX3M/pPf.net
検索が8,200あるのに、マッチするのはそのうち1つ有るかどうかなんだから
圧倒的に検索の問題になるだろうね
普通は

332:デフォルトの名無しさん
17/03/02 09:05:00.59 Ct6l/xwh.net
>>320
いや3万文字を置換のたびに1回1回stringのreplaceしてたらその度に3万文字分の配列を再確保
これが致命的
stringのreplaceはやってはならない
stringbuilderで
これも使い方悪いと速度出ないので正しい感じで

333:デフォルトの名無しさん
17/03/02 09:06:59.45 Ct6l/xwh.net
キーワードの検索の方はdictionary使ってるって言うし十分早いんじゃないかと予想

334:デフォルトの名無しさん
17/03/02 09:07:18.82 cjA1b3op.net
ツリーポインタに文字列中の開始インデックスをセットで持たせておいて、
終端ノードまで来たら開始インデックスから後を削除し、終端ノードに持たせてある置換文字列を付加し、現在のツリーポインタを全て破棄
こうすれば280で置換も効率的にやれるよ

335:デフォルトの名無しさん
17/03/02 09:17:20.56 cjA1b3op.net
>>321
それ文字列が長ければreplaceのための線形探索がネックになるはずで、StringBuilderは直接関係ないでしょ
簡単に効率を改善するんなら、全キーワードのうち最長のキーワードの文字数と同じサイズのバッファを持っといて
そこに対して置換をかけりゃいい
もちろんその置換結果を最終出力の文字列として連結していくところはStringBuilderを使うべきだけど

336:デフォルトの名無しさん
17/03/02 10:02:53.43 xcfTeAxl.net
問題は用途が不明だから、仕様が決まらない
に限定されると思ふ ノ ヽ(・ω・)/ズコー

337:デフォルトの名無しさん
17/03/02 12:13:19.52 63yIksCz.net
いいからコード書いて結果出そうぜ

338:デフォルトの名無しさん
17/03/02 13:30:45.83 NvG2Ox0H.net
ある程度の個数だとキーワードを全部つなげた正規表現を作るのが定石っぽいけど、
一万近いとどうなんだろうか

339:デフォルトの名無しさん
17/03/02 13:39:24.58 Ct6l/xwh.net
>>324
置換後に短くなっても駄目っぽいけどね

340:デフォルトの名無しさん
17/03/02 13:42:21.47 j0RdOmJS.net
8200のうちマッチが1つあるかどうかなのか、マッチがたくさんあるのか
で方法変えた方がいいな

341:デフォルトの名無しさん
17/03/02 16:45:48.51 yzi1qiN6.net
>>277
そんな変な処理をしなければいいだろ。
解決!

342:デフォルトの名無しさん
17/03/02 19:36:05.41 tOCPWbBv.net
こういうアルゴリズムのボトルネックってどうやって探すんだ?

343:デフォルトの名無しさん
17/03/02 19:43:30.86 j0RdOmJS.net
アルゴリズムのというか、処理のボトルネックはパフォーマンスプロファイルで出る

344:デフォルトの名無しさん
17/03/02 19:47:35.64 eNjjKtZ0.net
味見すりゃ分かるだろ。
それ以前にベタにやっても余裕だと思うが。

345:デフォルトの名無しさん
17/03/02 19:54:31.82 Ct6l/xwh.net
>>331
プロファイラ使えるようになるのが一番いいね
ただ、それじゃわかりにくいときもあるから知恵をつけるのも大事だと思う

346:デフォルトの名無しさん
17/03/02 20:14:46.47 eNjjKtZ0.net
ちなみに今回のはプロファイラでは分からんぞ。
例えばString.Replaceと出て終わり。
URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
その先の解像度は一般的に無いでしょ。(俺はC#のプロファイラを使ったことは無い)
だからここでやってるみたいにCLR内の動作を考える必要がある。

347:デフォルトの名無しさん
17/03/02 20:23:23.74 j0RdOmJS.net
>>335
それはプロファイラの考え方を間違ってる(使ってないみたいだから知らないのは当然かもしれんが)
replaceがネックって出れば�


348:サれでいいんだよ



349:デフォルトの名無しさん
17/03/02 20:34:59.52 Ct6l/xwh.net
>>336
そうだね
さらにgoogleで
replace 遅い c#
なんてキーワードで検索かければもう解決方法も見つかったようなもんだね

350:デフォルトの名無しさん
17/03/02 20:42:38.33 eNjjKtZ0.net
>>336
いや俺は他言語(JavaScript)ではプロファイラ使いまくりだぞ。
そしてプロファイラ自体は見た目ほぼ同じだし。当たり前だが。
というか今回は20行程度のプログラムで2重ループするだけだろ。
ベタでやった場合、String.Replaceが出るに決まってるだろ。
お前はアホの子か?
問題はそれをどう変えたらどう改善されるかの見通しを立てることだろ。
それはここでみんながやってるように、自分で考えないと分からない。
とはいえここで案を出してもらってるんだし、後はがんばれでしかないが。

351:デフォルトの名無しさん
17/03/02 20:44:03.61 maE+uJIv.net
>>338
馬鹿は一生js書いてろ
くせえから出歩くなクソが

352:デフォルトの名無しさん
17/03/02 20:49:46.45 rlmCwDYA.net
javascriptのプロファイリングは大切だからねえ
品質の悪いライブラリと品質の悪い人材によって書かれているから
すぐsucks so muchになるんだ

353:デフォルトの名無しさん
17/03/02 21:44:03.77 eNjjKtZ0.net
>>340
いやJavaScriptはJITがエグイからでしょ。(同じ傾向はC#にもあるはずだが)
例えばHTMLの特殊文字を変更する場合、string.replace(Regex,func)で纏めるよりも、
数個なら string.replace().replace().replace() とかハードコードした方が速かったりする。
ボトルネックがソースから予測しづらいからプロファイラを使うしかない。
その点、Cは最初から見えた状態で書くからいい。
ただこのあっさり感、C#ならString, StringBuilder, Regexで試して、
それ以上は諦める文化なのかもしれんね。そういう用途の言語ではあるし。
C的アプローチで限界速度を追求するのではなくてね。

354:デフォルトの名無しさん
17/03/03 07:07:46.01 GM13pkfI.net
やっぱここで質問したのが間違いでした
ろくな解決策が出ないので
もう結構です

355:デフォルトの名無しさん
17/03/03 07:16:35.43 cZXazyZL.net
なあ、、、
文字列探索アルゴリズムの問題だと思うのは俺だけかな?
そこを自前で実装すれば高速化できると思うのだけど

356:デフォルトの名無しさん
17/03/03 07:22:10.27 4qcBtzlj.net
>>343
それは>>280で出てる

357:デフォルトの名無しさん
17/03/03 07:22:40.42 cZXazyZL.net
URLリンク(developer.hatenastaff.com)
置き換え後、どこに格納するかはたいして重要じゃないはず。
状況に応じた探索アルゴリズムを使用することが重要。
自前実装は辛いけど。

358:デフォルトの名無しさん
17/03/03 07:31:45.18 ELiKOyhw.net
誰か>>280を実装してみてよ

359:デフォルトの名無しさん
17/03/03 07:34:13.74 4qcBtzlj.net
>>345
その「状況」は単純に探索をどうするかだけではないよ
置換処理に適したアルゴリズムを使用することが重要
その意味ではトライ木を使った方法(280)はリアルタイムで読んだそばから置換できるから目的に合ってる

360:デフォルトの名無しさん
17/03/03 07:50:58.21 pVtcQ1mY.net
そもそも何が目的なのか説明しろよ

361:デフォルトの名無しさん
17/03/03 07:54:40.78 a7lwSDS4.net
アフィ目的って気づけよバカども

362:デフォルトの名無しさん
17/03/03 07:56:17.33 pVtcQ1mY.net
アフィって何よ?

363:デフォルトの名無しさん
17/03/03 08:06:18.44 hxiWJWmX.net
>>347
検索された文字列から変換後の文字列を求める手間の話?
8,200個くらいならたいしたことないと思う

364:デフォルトの名無しさん
17/03/03 08:19:11.00 ELiKOyhw.net
誰も実装できないの?

365:デフォルトの名無しさん
17/03/03 08:30:26.60 LqKyLlg1.net
>>352
できるのわかってるし
正直、対象の文字列に対してdictionaryでまとめてある群からヒットさせるならそこまで変わらないと俺は思ってるので興味ない
さらに話題提供者は明確な仕様を出したわけではないので現状では「組めない」が正解
さらにこの問題は対象のデータの持ち方で解決する方法もあって多くの場合そっちのほうが楽なので
あまりこのスレで出たような解決方法を適用することは無いかも

366:デフォルトの名無しさん
17/03/03 08:56:05.96 LqKyLlg1.net
例えば対象の文字列がソースコードのように人間の目視できる文字数で改行が必ず入り、
キーワードが改行を含まないのであれば
行ごとにreplace処理して文字列の統合だけstringbuilderを使えばこれだけで十分な速度が出ると思われる
(1行300文字程度と想定)
とかね
僕のカコイイスペシャルエディタでも作らない限りはフォーマット自体に特有の癖があるもんで
大抵の場合は独自の解決方法を考えたほうが早い

367:デフォルトの名無しさん
17/03/03 09:35:42.12 velk9AIH.net
テキスト読み出しながらって書いてあるからすでに行単位でやってると思うが

368:デフォルトの名無しさん
17/03/03 13:45:46.60 hf3TFoOq.net
>>346
UNIXのShellのコマンド解析の実装がそんな感じ。
ただしスイッチ文の嵐だが(一文字目がCならCPを検査とか・・・

369:デフォルトの名無しさん
17/03/03 15:59:24.43 GTe30Tvn.net
あーアフィかぁ 超納得
1ファイルの文字数がやたら少ないし何の目的か全くわからんかった
>>346,352がアフィ本人だね

370:デフォルトの名無しさん
17/03/03 16:00:23.77 GTe30Tvn.net
間違えた
>>342,346,352がアフィ本人

371:デフォルトの名無しさん
17/03/03 16:00:55.70 oAXP4RlZ.net
>>352
アホの子なの?

372:デフォルトの名無しさん
17/03/03 16:02:40.13 nP8cPyWm.net
IT速報かな?

373:デフォルトの名無しさん
17/03/03 16:54:07.87 Loi48FLt.net
>>352こう煽ると情報出て来ること多いからな。いい手w

374:デフォルトの名無しさん
17/03/03 17:00:38.87 nP8cPyWm.net
C#で自動コメント投稿スクリプト作ってIT速報荒らすンゴwwwwwwwwwwww

375:デフォルトの名無しさん
17/03/03 19:35:06.90 MASUg06L.net
まーたカニンガムの法則を証明してしまったのか

376:デフォルトの名無しさん
17/03/04 00:57:57.14 V1fO2YUM.net
>>352
馬鹿かこいつ。

377:デフォルトの名無しさん
17/03/06 15:15:15.66 c2C1QaOD.net
俺に実装出来ないものなどない
実装しないだけだ(´・ω・`)

378:デフォルトの名無しさん
17/03/06 16:53:48.94 HdaZCaDT.net
うっせ!消えろ!
(´・ω・`).Dispose();

379:デフォルトの名無しさん
17/03/06 17:04:44.11 gswSb9xJ.net
void Dispose(){
  throw new GenjyuminException("お兄ちゃん僕を消さないで");
}

380:デフォルトの名無しさん
17/03/06 18:04:17.43 fLI2L2/v.net
while(true){
if((´・ω・`)==null)break;
}
これでどや、消えるまで永久に彷徨え

381:デフォルトの名無しさん
17/03/06 18:06:58.06 SM9wIIjZ.net
int (´・ω・`) = 0;
こういうのエラーになっちゃうんだけど、ならないのあるかな

382:デフォルトの名無しさん
17/03/06 18:10:04.79 gswSb9xJ.net
>>369
とうふさんをすころう🙋

383:デフォルトの名無しさん
17/03/08 07:21:50.44 0djAud0F.net
ASP.NETでEntityFrameWorkを
使い始めてデータエンティティの設計を
意識するようになったのですが
論理ER図とクラス図がほとんど同じ
ようなエンティティになるのは
良いのでしょうか?
使ってる言語がC#なだけで
OOPの話になっているみたいで
恐縮ですが

384:デフォルトの名無しさん
17/03/08 07:57:43.96 j5hWWAog.net
>>371
オブジェクト指向原理主義的に言うなら、最初にデータ


385:設計ありきで作ったのが間違い DB構造はオブジェクトを抽出した上でその永続化層として結果的に導出されるもの その結果、テーブル構成がクラスと一対一になるのはおかしくはない



386:デフォルトの名無しさん
17/03/08 09:10:06.96 4zQ1zZR+.net
>>371
>論理ER図とクラス図がほとんど同じ
>ようなエンティティになるのは
それをEFと言うんじゃないか?
殆ど同じじゃなく完全一致するんじゃないの?

387:デフォルトの名無しさん
17/03/08 11:04:45.08 WDLIW5bb.net
処理文より定形文の方が多くなる問題
皆さんはどうやって解決してますか?

388:デフォルトの名無しさん
17/03/08 11:21:49.05 j5hWWAog.net
>>374
メソッドやクラスを適切に使って使い回せばそんなことにはならない

389:デフォルトの名無しさん
17/03/08 12:38:38.92 xVFA2xmi.net
>>375
適切とは?

390:デフォルトの名無しさん
17/03/08 12:46:41.42 FTYppI6w.net
>>376
例えばこうしろってだけでしょ
method(0); method(1); method(2); method(3);・・・method(x);

for (int i =0; i <= x; i++) method(i);
ただいくらそうしたって作るものによっては定形だらけになるからな。そんなの気にするなとしか言えん

391:デフォルトの名無しさん
17/03/08 13:31:44.38 WDLIW5bb.net
>>377
それに、クラスとリターン、ラベル貼るから一行より長くなるんです

392:デフォルトの名無しさん
17/03/08 14:05:18.27 pm5pCz2z.net
>>373
EDM理解してる?

393:デフォルトの名無しさん
17/03/08 14:35:54.93 jFDZ8cwh.net
絵が描けなくても無料・有料とわず素材なんて腐るほどいっぱいあるんだから
リアルでカードゲームやボードゲーム作ってゲームマーケットで売ろう
個人利用、商用利用も可の198,381 個の無料ベクター画像
URLリンク(jp.freepik.com)
オシャレ感をプラスできる手書きのアイコン50選
URLリンク(blog.nest-online.jp)
無料素材:ヴィンテージ感がおしゃれ!デザインソフトのツールアイコン49個セット
URLリンク(switch-box.net)
無料素材:魔法陣の文様が描けるユニークな英語フリーフォント「MagicRing」
URLリンク(switch-box.net)
ねくらファンタジーマップチップ素材集
URLリンク(piposozai.blog76.fc2.com)
ひぽやマップチップ
URLリンク(piposozai.blog76.fc2.com)
クオリティの高いゲーム用のモンスター素材画像が手に入るフリー素材サイト5つ
URLリンク(agency-star.com)
ファンタジー世界地図を簡単に作れる「Inkarnate Worlds」をゲーム制作に活用しよう
URLリンク(www.moguragames.com)
QRコード・クトゥルフ神話・24世紀などユニークすぎるデザインてんこ盛りのサイコロ「Dice Empire」レビュー
URLリンク(gigazine.net)
駆け出し奮闘記「ゲームチップ・他小物類の作り方」
URLリンク(yuofc2.blog72.fc2.com)

394:デフォルトの名無しさん
17/03/08 16:48:47.00 EwGirieA.net
c#初心者なんですが
URLリンク(www.ibm.com)
>実際、作成された実行可能ファイルを別のシステム、おそらくWindowsが稼動しているシステムにコピーして、そこでそのまま


395:実行することができます。 Linuxで動くexeファイルがwindowsでもそのまま動くのはなぜですか? 本来、実行可能形式に互換性はありませんよね? Javaだと.jarファイルでjavaが関連付けられてるからどこでも動作するというのは分かるんですが



396:デフォルトの名無しさん
17/03/08 17:05:53.57 FTYppI6w.net
>>381
javascripはテキストファイルなのに実行できるってのと同じで、exeという拡張子だけど中身はスクリプトって考えりゃいい
linux側は「mono example.exe」のように実行するのはexeでなくmonoでしょ

397:デフォルトの名無しさん
17/03/08 17:10:53.01 CceDL3fb.net
>>381
Linuxはexeが実行ファイルという訳でもなし、mcsがPE互換でも吐いてるんじゃない?
C#はそもそも中間言語にコンパイルされるし、.NET Framework(あるいは互換ランタイム)を通して
色々な操作を行うので、DllImportとか除けばコード部分はプラットフォーム依存にはならない、Javaと一緒

398:デフォルトの名無しさん
17/03/08 17:41:17.11 4q4g4kgy.net
>>373
やはりそう思いますよね
自分もデータエンティティと
クラス図が一致してしまって
アンチパターンしてないか
不安になったもので
クラス図要らないじゃん
てことになって良いのかなと

399:デフォルトの名無しさん
17/03/08 17:56:23.47 EwGirieA.net
>>382
わかりました
linuxでもx window systemとかGUIシステムで
拡張子とプログラムの関連付けがあるみたいだけど
.exeをmonoに関連付けるのは少し疑問です
.jarみたいな固有拡張子じゃないので
windowsだと関連付け関係無く実行可能形式として動くんだろうけど
他のOSでは特定のプログラムから起動しなければならないというのが
非対称的でクロスプラットフォーム感欠けてるような気がします

400:デフォルトの名無しさん
17/03/08 18:12:34.14 ZazPDLJU.net
Windowsでもexeの中にあるMSILを
特定のプログラムでコンパイルしないと動かないぞ

401:デフォルトの名無しさん
17/03/08 18:13:37.64 NpQQdkRq.net
>>385
クロスプラットフォームにこだわるのならC#使わない方がいいだろ
>>383に書いてあるようにDllImportとか入っていたらどうしようもないんだから

402:デフォルトの名無しさん
17/03/08 20:03:39.84 VZtOnmtc.net
EF使いたいけど仕事での開発は腐りきったDBと手続き型の権力者が支配しててうまくいかないよ
ビジネスロジックはほとんどSQLとストアドに書かれ
ホスト言語はデータセットをUIとバインドするだけ
マイクロソフトは業界の現実を見据えたフレームワークを提供してほしい

403:デフォルトの名無しさん
17/03/08 20:08:18.13 jS0zQn/F.net
ジャップローカルな業界標準なんか基準にしても仕方ねーだろ

404:デフォルトの名無しさん
17/03/08 20:25:11.68 q0ZuMA54.net
今後は品質を上げるためにC#やめてJavaにするってさ
品質を上げるために
誰だよJavaオワコンとか言ってたの
Javaつよすぎんだろ

405:デフォルトの名無しさん
17/03/08 20:37:42.27 WDLIW5bb.net
新しく、C++,C#,Javaを超える言語の誕生を切に願う

406:デフォルトの名無しさん
17/03/08 20:43:44.50 YCUi9zWw.net
>>390
実際Javaは周辺技術はすごい
世界中の叡智が結集して糞を料理し、なんとか食えるものにしてる

407:デフォルトの名無しさん
17/03/08 20:50:23.47 YUr8l1RF.net
Java人にとってWindowsは周辺ではなく僻地です。

408:デフォルトの名無しさん
17/03/08 21:09:03.23 psTqZ+Sc.net
なんか中国人みたいだな

409:デフォルトの名無しさん
17/03/08 21:32:29.32 U5noIHdN.net
javaはoracleの時点で将来どうなるか判らないって不安がつきまとう
golangもgoogleだから不安がつきまとう
swiftもappleだから�


410:粕N後の未来も予測出来ない でも不思議とc#とmsの場合はあんまそういう不安が無い



411:デフォルトの名無しさん
17/03/08 21:39:55.81 Uljnsbub.net
>>388
>ビジネスロジックはほとんどSQLとストアドに書かれ
最適化のためにしかたなくストアド化することはあっても
ビジネスロジックまるごととかあるんだね
おいたわしゅう

412:デフォルトの名無しさん
17/03/08 21:49:14.72 YUr8l1RF.net
Javaが糞遅いからC#じゃないのか。
Javaと同じ設計をしたいならJavaを使えばいい。

413:デフォルトの名無しさん
17/03/08 21:51:54.89 MEKWLPl8.net
Windowsで趣味で遊ぶのにC#より楽な言語が無い

414:デフォルトの名無しさん
17/03/08 22:28:25.34 gllfe4Ss.net
みんな仕方なくうんこなJava使ってるだけだから。
大人の事情。

415:デフォルトの名無しさん
17/03/08 23:15:48.59 nWki5I6G.net
>>397
いやJavaが使われるような分野ならJava(やその周辺のライブラリ類)は糞速い
クライアントじゃビチグソだが

416:デフォルトの名無しさん
17/03/08 23:21:37.62 YUr8l1RF.net
高速ライブラリはすべてC++とアセンブラで書かれてます。

417:デフォルトの名無しさん
17/03/08 23:31:16.51 RgWWdtUJ.net
結果的には現実的な判断だったと思うよ。
OracleにはJavaを伸ばすほどの能力はない。
環境の互換性に固執した結果、エコシステムがブラッシュアップされたのならそれでOK。
あとはC#で実験済みの便利機能を順に採り入れていけばいい。
C#がJavaに滅ぼされない為には数歩先を走り続けるしかない。
そのうちにJavaと同レベルのエコシステムが揃えられればJavaを食えるかもしれないが、
これはかなり厳しいとは思う。

418:デフォルトの名無しさん
17/03/09 00:10:57.40 x6aOWZGA.net
Javaのエコシステム!?
今Javaの一番メジャーなパッケージマネージャって何?
rubygemsやnpmみたいなのないって聞いたら
Mavenでpom.xmlって言われて愕然としたことがある

419:デフォルトの名無しさん
17/03/09 00:43:02.76 zrZoqbyp.net
>>403
Mavenで用は足りるし、LLっぽいのがお好みならGradleも人気

420:デフォルトの名無しさん
17/03/09 07:33:43.82 i1kRuTOP.net
>>388
EFって何がいいの?
そんなの使わなくてもsql実行すればいいんじゃないの?

421:デフォルトの名無しさん
17/03/09 19:18:10.50 NWFSmelL.net
>>405
ORMでググれ

422:デフォルトの名無しさん
17/03/09 19:27:05.21 kp/XS3en.net
operational risk management
業務運営リスク管理
sqlを文字ではなくオペレーションとして記述できるからsqlコマンド記述ミスによるバグやsqlインジェクションに強くなり
リスク回避に繋がるソース運営や管理ができる

423:デフォルトの名無しさん
17/03/09 19:28:46.08 ekX4ZlFq.net
C言語って何がいいの?
そんなの使わなくてもアセンブラ使えばいいんじゃないの?
35年前の会話

424:デフォルトの名無しさん
17/03/09 19:38:38.06 6OW1VF+t.net
ただまあ、便利な道具も、出来の良し悪しというのがあって

425:デフォルトの名無しさん
17/03/09 19:39:54.78 NWFSmelL.net
>>409
使う側の頭の良し悪しってことかな

426:デフォルトの名無しさん
17/03/09 19:43:58.45 6OW1VF+t.net
そう、EFはあまり出来は良くない

427:デフォルトの名無しさん
17/03/09 19:45:09.07 NWFSmelL.net
>>411
具体的に

428:デフォルトの名無しさん
17/03/09 20:12:05.29 J4siqdXV.net
クエリビルダとかコードファーストは要らないかな
まっさらなDB扱う機会なんてそうそうないし

429:デフォルトの名無しさん
17/03/09 21:56:54.03 i1kRuTOP.net
>>407
sql記述ミスしなければいいだろ。

430:デフォルトの名無しさん
17/03/09 22:09:20.08 ZZ1gzprq.net
>>413
既存DBからのコードファースト

431:デフォルトの名無しさん
17/03/09 22:09:48.58 GqwkUUnW.net
>>414
ばーか

432:デフォルトの名無しさん
17/03/09 22:25:30.67 FW6HepzM.net
>>414
そんな根性論・精神論的なものでミスは無くならないよ

433:デフォルトの名無しさん
17/03/09 22:38:08.68


434:i1kRuTOP.net



435:デフォルトの名無しさん
17/03/09 22:45:19.50 mybEc7J1.net
SQLじゃ静的チェックが効かないし、列名とメンバ名のマッピング作業でミスを生じやすい

436:デフォルトの名無しさん
17/03/09 23:05:42.43 ZZ1gzprq.net
EntityFramework以前の問題だなこいつ

437:デフォルトの名無しさん
17/03/09 23:06:17.34 ojqe9dcn.net
>>411
具体的に

438:デフォルトの名無しさん
17/03/09 23:10:24.76 4hz9mkjX.net
おそい
かたい
つかいづらい

439:デフォルトの名無しさん
17/03/09 23:15:15.25 ZZ1gzprq.net
>>422
おそい→単純に速さを求めるならDapper使えば?EFは速さが目的のORMじゃないし
かたい→意味不明
つかいづらい→馬鹿ならプログラミング諦めれば?

440:デフォルトの名無しさん
17/03/09 23:15:20.88 i1kRuTOP.net
>>422
確かに遅いよね

441:デフォルトの名無しさん
17/03/09 23:15:56.47 OsFG/gY3.net
>>422
日本語でよろしく

442:デフォルトの名無しさん
17/03/09 23:16:37.66 OsFG/gY3.net
>>424
うん、当たり前だよね

443:デフォルトの名無しさん
17/03/09 23:36:02.15 4hz9mkjX.net
>>423
→おそい
昨今なにが速度のボトルネックってDBアクセスなのにおそくていいわけがない
→かたい
なんというか、型が固いんだ…
データいっぱい取ってきてもダックタイピングとかないからいちいち入れ替えなきゃいけないし
メソッドをまたいでデータをやり取りしづらい
→つかいづらい
変な落とし穴いっぱい
あと抽象化しすぎ
DBと通信するタイミングとかこっちの好きにしたい

よさそうだった
よさそうだったんだ…
ちょっと触った最初の一瞬は夢が見れたが

444:デフォルトの名無しさん
17/03/09 23:39:24.67 P0KhFIxP.net
>>427
お前C#向いてないからやめとけ

445:デフォルトの名無しさん
17/03/09 23:40:17.24 4hz9mkjX.net
なんでよ

446:デフォルトの名無しさん
17/03/09 23:45:18.70 ZZ1gzprq.net
>>427
生のADO.NETと比較すると遅くても、実運用に耐えられる程度なら問題ない
遅さのデメリットをメリットが上回る場合に採用すべき
設計ミス
お前の頭が足りてないだけ
抽象化しないとInMemoryやFakeのIDbcontext使ってUnit Testできない

447:デフォルトの名無しさん
17/03/10 00:07:57.78 Kg4/WRpJ.net
>>430
Dapperのところ見ると10倍以上遅いって数字弾いているし
体感上も遅いだろ
URLリンク(github.com)

448:デフォルトの名無しさん
17/03/10 00:14:08.74 cBCq3F3F.net
>>431
日本語

449:デフォルトの名無しさん
17/03/10 00:15:07.75 PorFrx4J.net
>>431
遅いのは皆わかってるんだけど
何言ってんのこいつ

450:デフォルトの名無しさん
17/03/10 00:29:46.92 cBCq3F3F.net
>>431
そのEntityFramework、3世代前くらいじゃね?
こっちの方がまともに比較してる気がする
URLリンク(msdn.microsoft.com)

451:デフォルトの名無しさん
17/03/10 00:35:01.00 PorFrx4J.net
誇大広告ワロタ

452:デフォルトの名無しさん
17/03/10 00:47:22.95 Cysk3AQ/.net
>>431
Dapperを使ってメモリ上でUnit Testやる方法教えて

453:デフォルトの名無しさん
17/03/10 01:56:20.00 YvYLhW/g.net
割といままで関わったプロジェクトは、敢えてスドアドで疎結合にしてるの多かったな。

454:デフォルトの名無しさん
17/03/10 05:22:26.01 hxjDKO5o.net
以下のページを参考にしてい
指定したURLからHTMLを取得するプログラムを作成しております
URLリンク(www.kekyo.net)
取得する処理を作成することは出来たのですが
取得処理を走らせてからリクエストが帰ってくるまでの間
GUIの操作が一瞬とまってしまう現象が発生しております(一瞬フリーズするような感じです)
ですので連続してhtmlを取得したり、サイズの大きなものを取得する場合
長時間フリーズしてしまうことになるので大変困っております
どなたか解決方法をご存知の方がおりましたら
教えていただければ幸いです
よろしくお願いします

455:デフォルトの名無しさん
17/03/10 05:22:50.13 hxjDKO5o.net
ちなみに参考にしたソースは以下の通りです。
public static async Task<string> ReadFromUrlAsync(Uri url)
{
using (WebClient webClient = new WebClient())
{
using (Stream stream = await webClient.OpenReadTaskAsync(url))
{
TextReader tr = new StreamReader(stream, Encoding.UTF8, true);
string body = await tr.ReadToEndAsync();
return body;
}
}
}
public static async Task DownloadAsync()
{
Uri url = new Uri("URLリンク(github.com));
string body = await ReadFromUrlAsync(url);
Console.WriteLine(body);
}

456:デフォルトの名無しさん
17/03/10 07:53:36.33 /HdMhfmB.net
>>437
ストアドはビジネスとデータが密着して全く疎にならないだろ

457:デフォルトの名無しさん
17/03/10 07:55:23.13 LDoDwujD.net
>>437
かわいそうに

458:デフォルトの名無しさん
17/03/10 07:56:43.00 CZUjNxSc.net
普通シングルスレッドでは、処理中は、
進捗状況を表示するプログレスバーでも、描画が止まるから、
GUI/worker用のスレッドは、別々のマルチスレッドにする
プログレスバー描画のサンプルでも見れば?

459:デフォルトの名無しさん
17/03/10 09:46:49.61 ccNaYHW5.net
>>437
そのうちいいことあるよ、頑張って

460:デフォルトの名無しさん
17/03/10 11:25:04.92 LzpSY1Zb.net
>>438
WebClient(とその中で使ってるHttpWebRequest)が
名前解決部分を非同期化できてないっぽい
HttpClientを使おう

461:デフォルトの名無しさん
17/03/10 12:24:52.88 /STnO1DK.net
え?みんなEF使わないがデフォなの?

462:デフォルトの名無しさん
17/03/10 12:26:08.18 Tes7zBzn.net
あんなものを使うのはお勉強ができるだけの無能だけ

463:デフォルトの名無しさん
17/03/10 12:36:20.43 wvkqDHaL.net
>>445
使わないじゃなくて使えないんじゃない?新しいことを学習できないんだよ

464:デフォルトの名無しさん
17/03/10 12:46:27.34 Tes7zBzn.net
新しいものに飛びついてもあとであれはゴミだったというものもたくさんある
EJB2.0とか

465:デフォルトの名無しさん
17/03/10 12:51:59.29 wvkqDHaL.net
>>448
それはその通りだね
EntityFrameworkはもうそろそろ10年たつんだけど

466:デフォルトの名無しさん
17/03/10 13:10:03.19 mpFYTheR.net
やっぱJavaなんやね

467:デフォルトの名無しさん
17/03/10 13:53:22.42 AGPJ29Rn.net
新しいのを使うのも、古いのを使い続けるのも、どっちも長所短所がある
同じ長所短所でも環境によって評価が変わるからどっちが絶対にいいってのはない
それ考慮してどっち使うって当たり前の選択ができない奴多すぎるんだよ

468:デフォルトの名無しさん
17/03/10 15:40:00.20 y8xCqliG.net
>>440
んなの書き方によるだろ

469:デフォルトの名無しさん
17/03/10 18:15:05.97 NraHDdZK.net
使って文句ないやつは使ってればいいのよ。
俺は使うのをやめた。理由を他人に説明する必要も、他人が納得する必要もない。

470:デフォルトの名無しさん
17/03/10 18:36:12.55 wvkqDHaL.net
>>453
使えるやつは使う、使えないやつは使わない

471:デフォルトの名無しさん
17/03/10 18:42:37.52 NraHDdZK.net
そういうこった。俺には使えない。

472:デフォルトの名無しさん
17/03/10 18:43:15.86 NraHDdZK.net
使わなきゃ、使いにくいとこも分かんないからな。

473:デフォルトの名無しさん
17/03/10 18:46:25.98 Gc8NaZGi.net
世の中はまだWinFormsだからな。
新しいものに対応できないジャパン。

474:デフォルトの名無しさん
17/03/10 18:49:44.85 YN/8CtFT.net
>>456
ADO.NET直書き?

475:デフォルトの名無しさん
17/03/10 19:38:33.09 jSwjVui3.net
>>457
Microsoftはバグ管理にExcel使ってるんだぞ
振り回されたらあかん

476:デフォルトの名無しさん



477:sage
DotNet CoreでバッサリWebFormsとDataSet切り捨ててくれたから 日本もこれからはMVCとPOCOにシフトしていくだろうね(希望)



478:デフォルトの名無しさん
17/03/10 20:10:01.97 cBCq3F3F.net
>>445
基本的にはEntityFrameworkで、パフォーマンスほしいとこはDapper

479:デフォルトの名無しさん
17/03/10 20:35:03.91 BdCDiQus.net
dapperって何がいいの?

480:デフォルトの名無しさん
17/03/10 20:40:29.72 cBCq3F3F.net
>>462
上にもいろいろ比較出てるけど、とにかく速くて簡単
DBとオブジェクトの最低限のマッピングだけでいい場合はこれで十分

481:デフォルトの名無しさん
17/03/11 09:49:08.82 +LwMML+J.net
動的だけど滅多にソースが更新されないほとんど静的なページのキャッシュってどう扱えばいいんですか?
クライアントにキャッシュさせて更新があった時だけアクセスしてほしいです

482:デフォルトの名無しさん
17/03/11 09:53:48.23 h5T3JHpB.net
>>464
ブラウザーがやってくれるんじゃないか?

483:デフォルトの名無しさん
17/03/11 13:46:01.01 SoGUL2Zu.net
VisualStudio2017お試しで使ってるんだけれど
タプルとか求めていたものが有ったので使おうとしたら
ValueTupleのライブラリが標準で入らずNuGetにしか無いとか
まだ安定しない無いとか何かあるんだろうか・・・
凄い作りかけ感あるコンパイラに仕上がってるwww
使うべきか暫く様子見すべきか?

484:デフォルトの名無しさん
17/03/11 13:50:47.46 /3A6iA0R.net
Windowsのcsc.exeでコンパイル出来ないC#6.0も見送ってるならそうだな

485:デフォルトの名無しさん
17/03/11 14:02:34.64 SoGUL2Zu.net
タプルの利用はしばらく様子見にしとくか・・・何か怪しいし。
ローカル関数いいね、これやる時名前空間が汚れてインテリセンスが腐るから欲しかった
これだけでも移行価値は無くは無いか・・・
IEnumerable<int> Enumerate(int begin, int end)
{
 if (end < begin
  || end < 0
  || begin < 0)
   throw new System.ArgumentOutOfRangeException("ほげぇ");
 IEnumerable<int> Body()
 {
 for (int i = begin; i <= end; ++i)
  yield return i;
 }
 return Body();
}

486:デフォルトの名無しさん
17/03/11 14:40:42.15 SoGUL2Zu.net
ちらちら見ていると、ValueTaskの方はもっと状況が酷いのかなw
URLリンク(www.buildinsider.net)
言語みたいな基幹部分を小出しにするとか、頭おかしくなってるなw
今までそんな事をした言語の末路がどうなったか知らないわけじゃなかろうに・・・
NuGetにして普通にコードする人には使わせないようにするのは、これはヤバイと中の人が感じているのかもしれんね
マイクロソフトの技術力&組織力低下酷いな、半端に才能ある奴のスタンドプレーでグダクダなってるんだろうな。
Web系に翻弄され過ぎだろ
とりあえず使えそうなのは、ローカル関数と型switchくらいかな
この辺りなら変更あってもダメージ少ないだろうし。
タプルの実装に致命的問題があるならローカルclass&struct&enum宣言でもええんやでぇ
名前空間お腐れ問題はカッコイイ事しなくても、これでも解決するんや > microsoft

487:デフォルトの名無しさん
17/03/11 15:24:01.58 SoGUL2Zu.net
>>218
横だけど、式木はちゃんと言語でサポートしなきゃ誰にも読めない言語になるなと思った。
逆に、それ自体は難解


488:でもないし難しい話じゃないなとも。 プログラムとは違うけれど 3Dモデラーでツリー構造とか法線とか難解な数学概念が見ての通りの操作で動かしたり創れたりするようになって 門外漢の3Dデザイナーが普通に使えるようになったように 一度概念をキッチリ整理する必要があるんだよ、あれは。 そして言語の作りこみがあの頃から甘くなってき始めてたな、ちょっと残念な感じになっていった時代だね。 とりあえず腐り過ぎのWin10をWin7の仕様に戻せや、ストアもユニバーサルアプリも使い物にならん、色使いも糞でUIが見ずらい > microsoft あと、WindowsUpdateのタイミングはユーザーの自由にさせよ、お前がお前のタイミングで勝手にやったら業務はむちゃくちゃになる。



489:デフォルトの名無しさん
17/03/11 22:05:54.03 h5T3JHpB.net
>>466
タプルなんて昔からあるだろ

490:デフォルトの名無しさん
17/03/11 22:18:07.78 15EAzLR8.net
>>471
残念ながら昔からあるTuple<>とは全くの別物
機能的には匿名型にも似ているが、匿名型との互換性もない
ローカル関数なんかも極めて場当たり的なゴミだろ
デリゲートの型を省略できるようにして var func = (int x) => x * 2; と書けた方がずっと便利

491:デフォルトの名無しさん
17/03/11 22:40:13.41 7U1HyGmG.net
>>472
いつからここが初心者用になったんだ

492:デフォルトの名無しさん
17/03/12 01:14:05.08 +ulIycHH.net
>>469
URLリンク(github.com)
によると、.NET4.7に入れることにしたみたいだね
nugetで済むのに.NETのバージョンを上げるのは面倒が多いし、今後C#のリリース速度を早めるならある程度まとめて.NET4.7にしようって考えじゃないかなぁ
言語機能の小出しについても他の言語と比べれば遅いし、互換性と将来を考えて慎重に作ってるから完全な完成を待つと永遠にリリースできなくなっちゃうし、やむをえんだろ
CLRのバージョンを保ってくれれば文句は無い

493:デフォルトの名無しさん
17/03/12 02:13:23.38 lK2SBg8L.net
List<string> list; があって
そのlistのx番目からy個文字列連結したいのですがLinqでどう書けますか?
x番目から3個なら
var result = $"{list.Skip(x).Take(1).FirstOrDefault()}{list.Skip(x + 1).Take(1).FirstOrDefault()}{list.Skip(x + 2).Take(1).FirstOrDefault()}";
こんな感じですけど短く綺麗にしたいのですが…

494:デフォルトの名無しさん
17/03/12 02:33:41.68 tHLqC2EA.net
>>475
var result = String.Join( "", list.Skip(x).Take(y) );

495:デフォルトの名無しさん
17/03/12 05:07:11.99 lK2SBg8L.net
>>476
わー、短くて綺麗。
ありがとうございました。

496:デフォルトの名無しさん
17/03/12 06:43:42.92 RIOf9bqD.net
>>472
>デリゲートの型を省略
できるならとっくにやってるんじゃないかなw
ラムダ式は書けるコードが限定され過ぎるのが問題かな。>>468 はそれではどうやっても書けないでしょう。

497:デフォルトの名無しさん
17/03/12 08:53:09.32 bReP5RFT.net
>>475
自分で理解できねーもん他人に強制するその姿勢がすでにクソ
なんでその処理linqで書いた?
しかも自分は掲示板で質問しなきゃわかんねーのに
さっさと辞めちゃえお前
伸びる目もねーから

498:デフォルトの名無しさん
17/03/12 09:23:31.23 7tB+K/sW.net
何でこの人キレてんの?あの日?

499:デフォルトの名無しさん
17/03/12 10:01:53.12 RIOf9bqD.net
みるからに自演臭くてキモイからじゃねw

500:デフォルトの名無しさん
17/03/12 10:23:22.36 1QMoXo8Q.net
ラムダ式自体は型を持たないから、delegate型と決めつけてvar対応するなら専用のルール付けが必要だと思う。
そこまでする価値は無いかな。

501:デフォルトの名無しさん
17/03/13 06:11:29.33 o9PLbB2Z.net
すいません質問なんですが
アプリ起動中はAキーを推すと左クリック Bキーをおすと右クリック Cキーを押すとアプリ終了
みたいな感じでキー入力をマウス入力にいれかえるようなアプリを作りたいんですが
Windows上でフォーカスのあるウインドに依存せずにキー入力を取得するのってどうしたらいいんでしょうか

502:デフォルトの名無しさん
17/03/13 06:55:37.31 2GKmTNuX.net
以前、遠隔ウイルス片山も似た質問していましたね。

503:デフォルトの名無しさん
17/03/13 07:01:39.19 WHuP7MmV.net
フォームのKeyPreviewプロパティをTrueにすると、すべてのキーイベントをまずフォームが受け取り、処理が終了してからフォーカスのあるコントロールに渡されるようになります。
ってdobon.netで見つけた
やったことはない

504:デフォルトの名無しさん
17/03/13 07:17:17.53 o9PLbB2Z.net
ありがとうございます
KeyPreviewについて調べてみます

505:デフォルトの名無しさん
17/03/15 09:07:02.25 k1u612YY.net
すみません、EFで質問させて下さい。
下記のようにエンティティを定義して、それを編集するクライアントを作ろうとしています。
とりあえず、Modelに対する編集は無効にしてあるものとします。Unitに変更を加えて保存すると、
DBの中でModelのレコードが増えてしまいます。NameにUnique制約を付けると当然例外が派生します。
Unit.ModelがDbContextの管理外になってしまったので、別のインスタンスとして認識されているという理屈は分かります。
contextを都度作成せずに維持していれば、期待する動作になるのも分かりますが、それはできればしたくはないです。
何か上手い解決方法はないでしょうか?
public class Model
{ public int ModelId {get;set;}
 public string Name {get;set;} ※
}
public class Unit
{ public int UnitId {get;set;}
 public VM Model {get;set;}
 public string Serial {get;set;}
}
List<Unit> GetUnitList()
{ using (var context = ...)
 { return context.units.Include(x => x.model).Select(x => x).ToList(); }
}
void UpdateUnit(Unit unit)
{ using (var context = ...)
 { var target = context.units.Where(x => x.UnitId == unit.UnitId).FirstOrDefault()
  target.Model = unit.Model;
  target.Serial = unit.Serial;
  context.SaveChanges();
 }
}
var list = GetUnitList();
...リスト表示->エディタでunit.Serialを編集
UpdateUnit(unit);

506:デフォルトの名無しさん
17/03/15 09:27:37.16 N2+3G59G.net
>>487
そこまで分かってるなら解決策は簡単。
ModelIdで検索し直す。

507:デフォルトの名無しさん
17/03/15 11:16:57.42 k1u612YY.net
>>488
ありがとうございます、すっきりしました。
期待する結果に対してのコストが少々重くなるかなという気はしているのですが、
処理コストが問題になるほどの規模ではないので、そうさせて貰います

508:デフォルトの名無しさん
17/03/16 03:52:05.80 l+qA2/0G.net
C#でwebBrowserを使ってるんですが
以下のhtmlをwebBrowser.DocumentTextに突っ込んで表示させたいんですが
何故かwebBrowserではそのままjqueryを読み込むことが
できないようでスクリプトエラーが発生してしまいました
対処方法のわかる方いたら教えていただけますでしょうか?
↓以下のhtml
<!DOCTYPE html>
<head>
<meta charset=""utf8"">
<script src=""URLリンク(code.jquery.com)


509:.min.js""></script> <script type=""text/javascript""> $(function() { alert(""test"") }); </script> </style> </head> <body>



510:デフォルトの名無しさん
17/03/16 11:36:09.87 oyR0ujl0.net
なんでダブルクォーテーション2つ続いてるの?

511:デフォルトの名無しさん
17/03/16 16:49:18.07 l+qA2/0G.net
エスケープです
文字列に突っ込んでるのをそのままコピペしちゃったのでそのようになってます
すいませんがエスケープは無視して考えてください。

512:デフォルトの名無しさん
17/03/16 16:58:42.52 Qa1xgsfZ.net
<style>
<head>
<body>
</style>
</head>
</body>

最後のbodyを/スラッシュで括ってないからでは?

513:デフォルトの名無しさん
17/03/16 17:03:26.21 RyFuDdep.net
>>493
君は冷静だな

514:デフォルトの名無しさん
17/03/16 17:05:05.86 Qa1xgsfZ.net
HTMLソース
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML5サンプル</title>
</head>
<body>
<p>HTML5で作成しました!</p>
</body>
</html>
連投ですまん
もっと解り易いサンプル

515:デフォルトの名無しさん
17/03/16 18:14:35.84 kQHrflry.net
WebBrowserがデフォだとIE7モードで動くせいでjquery 2.1.4が動かない
・jquery 1系使う
・headに
<meta http-equiv="X-UA-Compatible" content="IE=edge">
等を書く
・レジストリでモード変更する
好きなのどうぞ

516:デフォルトの名無しさん
17/03/16 18:38:16.89 RyFuDdep.net
>>496
君は詳しいな

517:デフォルトの名無しさん
17/03/16 20:09:32.60 G/L2rMHg.net
簡単に単体テストできるのか知りたいです
public static async Task DoHeavyAsync(string path, IProgress<long> progress, CancellationToken token)
という非同期メソッドの単体テストで、同期版の DoHeavy() と同様のテスト以外に、
(1) progress が動作していることの確認
(2) token が動作していることの確認
が必要だと思います
(1) が簡単ではない
var progress = new Progress<long>(n => { Assert.Fail(); });
などやっても、テストが成功してしまう(レポートがメソッド終了後に届くため)
まじめにやるとしたら別スレッドを作る必要がありそう?
(2) は、巨大ファイルを使って new CancellationTokenSource(20) などでキャンセルされることを確認という
汚い手法でテストしています(処理速度があがった場合にテストが失敗する可能性があるのが汚い点)
(1)と(2)、それぞれどのようにテストするべきでしょうか? 特に(1)
NUnit を使ってますが、他のフレームワークでもいいです

518:デフォルトの名無しさん
17/03/16 20:16:08.57 kgKaK9fl.net
非同期処理の確実なテスト方法は存在しないのでどっかで妥協しなきゃならない

519:デフォルトの名無しさん
17/03/17 07:37:50.30 gTyXrRTf.net
よく分からんな
Taskなんだから結果が出るのを待機すればいいだろ
Progressは呼ばれたらcalledフラグを立てるようにしてそいつでAssetする
タイムアウトが必要かどうかは状況次第
2つめは、内部でFileStreamを使っているならだが
Streamを受け取るインターフェースを追加する
クッソ遅いStreamは自由に再現できる

520:デフォルトの名無しさん
17/03/17 08:16:11.77 VDcrtJ6N.net
>>496
ありがとうございます!大変助かりました!

521:デフォルトの名無しさん
17/03/17 21:11:54.40 G6TjLWRU.net
>>499
やっぱり妥協かなー
>>500
(2) はなるほどね。作ってみる
(1) なんだけど、Progress.Report() での通知は、タスクを await で待機したとしても、
待機が終わった後でも Action<T> が呼ばれているとは限らない
巨大なタスクを


522:渡して、 Progress.Report() が『たぶん』呼ばれるという妥協が必要かなー 単体テストをパスしたとしても、たまたま運良く Action<T> が先にスケジュールされただけだよ 下記のコードはうちの環境ではテストに失敗してた public static async Task DoLightAsync(IProgress<long> progress) { await Task.Delay(10); progress.Report(123); } [Test] public async Task DoLightAsyncTest() { bool called = false; await DoLightAsync(new Progress<long>(n => { called = true; })); Assert.IsTrue(called); }



523:デフォルトの名無しさん
17/03/18 00:00:39.16 3lIBsEeS.net
惜しいところまでは行ってるな
Progressのインスタンスを渡すのではなく
IProgressを継承し同期のReportを実装したクラスのインスタンスを渡す

524:デフォルトの名無しさん
17/03/18 10:58:29.15 UTVmwL6L.net
ふむー、こうか
確かに Progress<T> にこだわる必要はなかったなー
public class SynchronousProgress<T> : IProgress<T>
{
private readonly SynchronizationContext _Context;
private readonly Action<T> _Action;
public SynchronousProgress(Action<T> action)
{
_Action = action;
_Context = SynchronizationContext.Current ?? new SynchronizationContext();
}
private void Callback(object state)
{ _Action?.Invoke((T)state); }
public void Report(T value)
{ _Context.Send(Callback, value); }
}
見づらいと思うので一応 pastebin にも貼っておく
URLリンク(pastebin.com)

525:デフォルトの名無しさん
17/03/19 00:14:21.68 xAk2llJg.net
ファイルのタイムスタンプを指定した時刻に変更したいんですが、コードのヒントをくださいm(_ _)m

526:デフォルトの名無しさん
17/03/19 00:19:27.37 8DI2TWvJ.net
>>505
FileInfo

527:デフォルトの名無しさん
17/03/19 00:30:52.74 VKtnwSVx.net
「ファイルのタイムスタンプ」でグーグル先生に聞けば
URLリンク(www.atmarkit.co.jp)
が一発で出てくるんだけど掲示板で聞く方が面倒じゃないの

528:デフォルトの名無しさん
17/03/19 06:34:49.31 bkt1N2YW.net
検索知らないんでしょ

529:デフォルトの名無しさん
17/03/19 13:50:14.09 PWrmpV5o.net
2chスレへたどり着けるのに検索知らないとかこれ如何に

530:デフォルトの名無しさん
17/03/19 14:33:00.16 DWsQT7k4.net
「お前ら、検索頼むわ(丸投げ)」

531:デフォルトの名無しさん
17/03/19 14:45:08.30 1DEeFth3.net
おまいらは回答する機械

532:デフォルトの名無しさん
17/03/19 14:53:33.02 VKtnwSVx.net
まあ調べたら自分の新しい知識になる場合もあるからいいんだけど
この程度の事も検索しないのならコードなんか書けないような

533:デフォルトの名無しさん
17/03/19 15:03:19.30 lJcyTqFl.net
プログラムやる奴らって質問されるとキレながらも答えたい願望あるんだよな
そして煽って議論させるのも好き
だからわざわざ検索しないでここに投げてあげたりする

534:デフォルトの名無しさん
17/03/19 15:04:25.29 1DEeFth3.net
それにしたって餌としてはしょぼすぎる

535:デフォルトの名無しさん
17/03/19 15:10:14.91 p4p+SSjy.net
ボランティアを馬鹿にすんじゃねーぞ、コラ!

536:デフォルトの名無しさん
17/03/19 16:02:53.06 T5IZ831S.net
人力検索

537:デフォルトの名無しさん
17/03/19 16:06:30.35 z5/tCjGK.net
>>513
そういうのは初心者向けふらっとの方でやってくれw
あそこなら解決済みでもグダグダ続けたがるのがいっぱいいる

538:デフォルトの名無しさん
17/03/19 18:48:36.73 lJcyTqFl.net
>>517
でも質問してくれないと寂しいんだろ?

539:デフォルトの名無しさん
17/03/19 18:52:31.68 bcM43571.net
くだ質とかVSスレとかこの板で変なやつ増えたよな
本当にプログラムやっているのかって感じの
ここにも来てるのか

540:デフォルトの名無しさん
17/03/19 21:56:16.72 HC9gBYvT.net
マ板行けって思うスレ多いよな

541:デフォルトの名無しさん
17/03/20 01:44:39.35 SU/B8


542:MWa.net



543:デフォルトの名無しさん
17/03/20 10:11:03.85 Afs087wZ.net
>>520←コイツの馴れ合おうとするレスうざっ

544:デフォルトの名無しさん
17/03/20 12:24:29.57 y4a+UdUh.net
>>522
マ板行け

545:デフォルトの名無しさん
17/03/20 14:10:48.91 pi/vFj6F.net
>>523お前が行け

546:デフォルトの名無しさん
17/03/20 14:57:32.61 98bjORSB.net
ここは幼稚園じゃないんだが。

547:デフォルトの名無しさん
17/03/20 15:41:51.51 4DDUMBY5.net
似たようなもんよ

548:デフォルトの名無しさん
17/03/20 15:48:57.55 LcNjV7jZ.net
言い争いを見てたら幼稚園児とたいして変わらん気がする

549:デフォルトの名無しさん
17/03/20 16:00:23.53 pi/vFj6F.net

いい加減うざいって、お前らずっとスレちがい

550:デフォルトの名無しさん
17/03/21 05:52:14.36 SG0A/rfm.net
ただいま C# 7.0 利用中
ジェネリックのローカル関数まで書けるのにオーバーロードは出来ない事に気づいてがっかりモードになっている件
なぜできんOrz
あと大抵の場合キャプチャは要らないんだけどな・・・
0b1110_1011 とか二進数のリテラル地味に便利w

551:デフォルトの名無しさん
17/03/21 06:45:57.61 0zsWCCNl.net
オーバーロードはクラス外からみて合理的なインターフェイスを提供するためのもので、
内部で使うだけなら紛らわしいだけだろ
オーバーロードが欲しくなるほど長いメソッドを作ること自体が間違ってるし

552:デフォルトの名無しさん
17/03/21 14:40:35.20 SG0A/rfm.net
>>530
そんな事は無いよ、型別にスイッチするくらいならオーバーロード見通しいい

553:デフォルトの名無しさん
17/03/21 19:18:26.99 bA9h/8/p.net
似たような処理するのにメソッド2つも要らない
中で分岐させて使え、その方が保守楽だから

って言われたことある。
オマエラも結局中で分岐させてる?

554:デフォルトの名無しさん
17/03/21 19:23:26.02 qbQ1Fjub.net
>>532
時と場合による
何でもかんでも共通部分をまとめようとするのはバカだが

555:デフォルトの名無しさん
17/03/21 19:24:42.66 qRIPyX6L.net
内部の分岐とかどうでもよくね?
似たような処理のメソッドが複数出来る時点で設計からして間違っているだろうし

556:デフォルトの名無しさん
17/03/21 19:30:08.87 72kEtT2Q.net
>>530
利用するかどうかは別にしてわざわざ禁止するほどのことではないよね
ってことだろ

557:デフォルトの名無しさん
17/03/21 19:31:27.83 qbQ1Fjub.net
>>534
ループ中で分岐処理が必要な場合があるので2行目は違うと思う
速度ちょっとでも稼ぎたいと思ったらループの外で分岐させておくだろうし

558:デフォルトの名無しさん
17/03/21 19:39:30.55 RrALGwyw.net
>>532
そういうことするとすぐに分岐が増えて収集がつかなくなる
この業界は既存のコードの権力が強すぎる
一回でもはまるともう最後まで逃れられない
だから最初から妥協せずクリーンな状態を維持し続けるしかない

559:デフォルトの名無しさん
17/03/21 19:50:56.44 UqOt5XZ1.net
だったらなおのこと分岐のが楽だな
実行して見ないとなんの処理が走るか分からないコードにメリットなんて感じない
資料にも書けないしお客さんにも説明できない

560:デフォルトの名無しさん
17/03/21 20:14:47.71 7sd4gAxo.net
>>535
オーバーロードを許すと実装コストは増えるよ
オーバーロードされたメソッドのマングリングってこれまでにやったことないはず
クソ長いメソッドを定義する馬鹿のために無駄な実装コストをかけることは許容できない

561:デフォルトの名無しさん
17/03/21 23:05:57.08 UqOt5XZ1.net
マンコリング?

562:デフォルトの名無しさん
17/03/22 02:05:33.87 Y


563:DOC/IGa.net



564:デフォルトの名無しさん
17/03/22 02:11:31.86 YDOC/IGa.net
なんであんなに変更可能キャプチャが好きなんだろうな・・・
関数型言語のように一度割り当てられたら変更がないことが保証されれば見通し良いし使い勝手も良いけれど
手続き型言語にキャプチャが入ると見通し悪い事この上ないから、可能な限り使わないようにしたい気分になっている。

565:デフォルトの名無しさん
17/03/22 11:28:29.87 hks7EAC1.net
C#の糞拡張はこれからが本番ですよ。

566:デフォルトの名無しさん
17/03/22 12:58:18.38 7zaDxJTN.net
文句あるなら自分で言語作ればいいのに
何で作れない分際で文句言ってるんだか

567:デフォルトの名無しさん
17/03/22 13:01:02.87 +8Koiwe2.net
基地外発想だな

568:デフォルトの名無しさん
17/03/22 13:23:33.31 6nIA/xoV.net
フジテレビ的発想

569:デフォルトの名無しさん
17/03/22 13:50:44.67 FLtL2zh7.net
自分で作れないから文句言ってんだろ
お前も同レベルに頭わるそうだなw

570:デフォルトの名無しさん
17/03/22 14:47:13.98 T50yqk9Q.net
>>544
できらぁ!

571:デフォルトの名無しさん
17/03/22 15:44:09.05 YDOC/IGa.net
ValueTuple使ったら、変数見えないデバッグできねぇwwww
まさに作りかけwwwww

572:デフォルトの名無しさん
17/03/22 15:45:53.48 YDOC/IGa.net
>>544
みんなで同じものを使うから意味があるんだよ、一人で勝手に作って勝手にやってたら滅茶苦茶なるだろw

573:デフォルトの名無しさん
17/03/22 19:44:37.37 JvcKijZm.net
ヘジたんも言語なんか開発するのは時間の無駄だからやめなさいと言っていたしな

574:デフォルトの名無しさん
17/03/22 20:41:21.23 qEl3ed9E.net
だれよ

575:デフォルトの名無しさん
17/03/22 20:59:39.74 eP+YAd4z.net
>>549
それ、お前がメクラなだけじゃね?

576:デフォルトの名無しさん
17/03/22 21:17:25.63 YDOC/IGa.net
>>552
Delphiの開発者で、ゲイツ御大にC#のアーキテクトしてボーランドから引き抜かれた人

577:デフォルトの名無しさん
17/03/22 21:23:40.38 YDOC/IGa.net
暫く使ってみたけど、やっぱ、ラピッドリリースはよくねぇよな
どんどん品質が落ちていく
誰だよこんな糞な手段はやらした馬鹿は
Windows10もVisualStudioもボロボロやん

578:デフォルトの名無しさん
17/03/22 22:28:00.53 MyrW3Mfd.net
>>555
どんどんお前が老いていってるだけ

579:デフォルトの名無しさん
17/03/22 22:41:57.96 Qh2JSeLT.net
最近思うんだけどRazor使わずに普通のhtml+JS+REST API(.NET)の方が開発しやすくない?
Razorって本当に便利なのかな?生産性あがる?

580:デフォルトの名無しさん
17/03/23 01:12:53.78 eX8m9MWo.net
業務アプリで同じような画面を大量生産するには便利A: [1.201975 sec.]B: [2.281051 sec.]

581:デフォルトの名無しさん
17/03/23 01:47:02.34 FaFIhE+0.net
C#に限らずかもしれないけれど、invokeってフォームに限ってどうして必要なのですか?
invokeを書けばメソッドを呼び出してプロパティにアクセスできるのは分かるのですが
invokeがないと何がダメなのか内部的なことを教えていただけますか?

582:デフォルトの名無しさん
17/03/23 01:52:24.45 Un9Q+jtZ.net
>>556
心配しなくても若い子はもうWindowsも使わなければVisutalStduio何それ?状態だからw
みんなWeb系でスマホばっかりやっている。
もう、ここに残


583:っているのは年寄りだけだよw



584:デフォルトの名無しさん
17/03/23 01:56:59.96 Un9Q+jtZ.net
>>559
昔のシングルスレッド時代の遺産を引きずっているんだよ
Formは、半ばラッパーライブラリなので。
シングルスレッドの利点はデッドロックの可能性がないこと。
マルチスレッド当たり前になってしまった今だと、逆にデッドロックの元になってしまったりと困った有様だけど。
遺産の量が大きいので、全く別の物を作るのは簡単ではないだろうね。

585:デフォルトの名無しさん
17/03/23 02:00:44.79 FaFIhE+0.net
>>561
ありがとうございます
もっと詳しく知りたいのですがどう言葉で調べればよいのでしょうか?
できればネットで調べれるものがよいのですが、書籍でも平気です
英語のサイトでも平気です
なにかあれば教えていただけますか?

586:デフォルトの名無しさん
17/03/23 02:04:38.43 VjAjr2s9.net
>>559
UI関連は、UIスレッドでのみ動作することを前提に設計することで、パフォーマンスを上げてる。
マルチスレッド対応にすると排他制御等が増えてしまい、パフォーマンスが下がる。
>>561
非同期処理とか書きやすくなったから、最近は割と楽だろ。
Invokeも使う必要ないし。

587:デフォルトの名無しさん
17/03/23 02:05:51.99 Un9Q+jtZ.net
>>562
C言語から、直接Win32APIを叩いてみればわかると思うよ。
WM_XXXXとかを直接使ってGUIを動かしてみれば、古いインターフェイスの感触どんなもんか分かるかと。
年代物なので、古本屋でWin32の本でも探してみるのもいいかも。
今更みる価値あるのかって思うので、お勧めはしないけど。

588:デフォルトの名無しさん
17/03/23 02:07:28.88 Un9Q+jtZ.net
>>563
Task作った奴はバカだと思うwww
Invokeの方がまだ誰にでも分かりやすい。
継続なにそれおいしいのwww
関数型言語面白いねって感じだね

589:デフォルトの名無しさん
17/03/23 02:09:33.89 Un9Q+jtZ.net
このマルチコア時代にシングルスレッドで頑張ってパフォーマンス上げるとか
時代錯誤も甚だしいよな・・・

590:デフォルトの名無しさん
17/03/23 02:16:32.78 FaFIhE+0.net
>>563,564
新人にinvokeを教える際に困ってしまったので
浅くでも知識として知っておきたかったので助かりました
Win32からの流れなのですね、Formだけこんなに違うのはそういうことなのですね。。
時間があるときにもう少し調べてみようと思います
ありがとうございました

591:デフォルトの名無しさん
17/03/23 02:21:34.59 VjAjr2s9.net
>>565
async/awaitやIProgress<T>あるから、Taskの継続を直接使う事はあまり無いな。
間接的には使ってるわけだが。

592:デフォルトの名無しさん
17/03/23 02:21:39.46 9gkqdxMB.net
>>566
時代関係ないから
スレッドセーフにするとパフォーマンスが犠牲になるのはUIだけじゃない
BCLのクラスのインスタンスメソッドも大半はスレッドセーフじゃない

593:デフォルトの名無しさん
17/03/23 02:22:11.13 Un9Q+jtZ.net
Win32は、当時のオブジェクト指向の実現にむけての試行錯誤が見れるのは面白いかもしれない
メッセージ飛ばしたり、メール飛ばしたり、色々試行錯誤の末にC++の仮想テーブル方式にたどり着く訳だけれども
その前の段階のオブジェクト指向が見れるよw

594:デフォルトの名無しさん
17/03/23 02:23:39.71 Un9Q+jtZ.net
>>569
いつまでも凝り固まってますねwww
もうハイハイって感じですわ

595:デフォルトの名無しさん
17/03/23 02:28:42.19 Ei+8urX3.net
しかしGUIなんて所詮人間速度だし、パフォーマンスって要らないよな?
フォームに関しては最初からマルチスレッド対応でinvokeの必要無しの方が良かった気がするが。

596:デフォルトの名無しさん
17/03/23 02:30:27.90 9gkqdxMB.net
>>571
いるよね、こういう量的な進歩と質的な進歩の区別のつかない�


597:z 馬鹿な奴だ



598:デフォルトの名無しさん
17/03/23 02:31:53.25 VjAjr2s9.net
何でもマルチセーフにすれば良くなるってもんでも無いのね。
排他制御のコストは大きいから、なるべくそれを無くす設計が重要。

599:デフォルトの名無しさん
17/03/23 02:32:30.61 Un9Q+jtZ.net
>>572
いやいや、それでもあった方がいいよ
マルチスレッドできっちり分散できれば、1CPU辺りの負荷が軽くなる
すると低クロックで動いて消費電力が小さい。
シングルスレッドだと、同じ負荷でも1CPUに集中するからクロックが上がってしまう。

600:デフォルトの名無しさん
17/03/23 02:35:01.08 Un9Q+jtZ.net
>>573
質的にはTaskは逆立ちして徒競走しているようなモンだなw
普通立ってに走れよ、頭オカシイんかいってなもんだね。

601:デフォルトの名無しさん
17/03/23 02:36:32.46 9gkqdxMB.net
しかし、マルチコアっていうのは苦し紛れの「苦肉の策」であってポジティブな進歩じゃないって
パソヲタレベルでも知ってる常識だと思ったけどプログラマでもそういう認識がない奴がいるんだね。
そういう奴は「人月の神話」って言葉も聞いたことないんだろうな。
生産性は作業者の投入人数に比例しないのはコンピュータも同じだよ馬鹿

602:デフォルトの名無しさん
17/03/23 02:38:13.08 Ei+8urX3.net
>>575
いやお前実は分かってないだろ。
575はinvokeを肯定しているぞ。てかお前どっち派よ?

603:デフォルトの名無しさん
17/03/23 02:40:35.49 Un9Q+jtZ.net
>>578
async / await 最新わかってる俺スゲーなヤツが死んでほしい派
技術的には、まぁあるもん使うさってなもんだ。

604:デフォルトの名無しさん
17/03/23 02:57:11.32 VjAjr2s9.net
>>576
Taskはスレッドプールを使いやすくしたもの。
スレッドプール自体は昔から使われるテクニックだし、なんでそこまで嫌うのか分からん。
Taskのおかげで非同期処理が非常に楽に扱えるようになったのに。

605:デフォルトの名無しさん
17/03/23 03:07:35.11 Un9Q+jtZ.net
>>580
以前作って滅びたATLなんかと同じだね、入門者がすぐに理解して使えない物は糞
WPFも同様の香りがするね
分からないけれどなんとなく使えているって人だらけになって理解していないから、エラー対処ができない。
そうすると、全部特定の人に負担が行く、そんなコードやライブラリは使えない。
これはマイクロソフトの象牙の塔だよ

606:デフォルトの名無しさん
17/03/23 04:45:12.92 0wLqn0eU.net
ATLがいつ滅んだんだよw

607:デフォルトの名無しさん
17/03/23 07:10:17.81 UmFjwc/F.net
昔の名残とかじゃなく、単にマルチスレッドでUI部品を扱うのが大変だということだと思うんだが
ユーザーインターフェイススレッド - Wikipedia
URLリンク(ja.wikipedia.org)
>例えば、Java の AWT では、1996年の最初の時点では、
>単純にスレッド間でデータ共有型のマルチスレッドになっていた。
>しかし、データ共有するには、ロックをかけないといけないが、
>親コンポーネントから子コンポーネントを呼んだり、
>コールバックで子から親を呼んだり、
>アプリケーションからGUIライブラリを呼んだり、
>GUIライブラリからアプリケーションをコールバックしたりと、
>双方向に呼び出すことが多く、
>異なるスレッド間で双方向に呼び合うときは、ロックの順番に注意を払う必要がある。
>これはソフトウェアが非常に複雑になる原因となってしまう。
>また、ロック順序のミスが引き起こすデッドロックは常にではなく
>たまに発生したりすることの多いバグ(時間的確率要因が関与する偶発性のあるバグ)であり、
>バグ取りが大変になるという問題があった[


608:3]。 > >そこで、1997年の Java の Swing からは、 >UI の操作は全てメインのUIスレッドであるイベントディスパッチスレッドから >操作しなくてはならない、というルールを設けた。



609:デフォルトの名無しさん
17/03/23 07:23:37.05 i5lX3ZQq.net
それを昔の名残とかラッパー、速度優先って言ってるんでしょ
マルチスレッドにしようと思ったらできるんだから

610:デフォルトの名無しさん
17/03/23 08:05:24.99 eX8m9MWo.net
WinFormsやWPFを含めたGUIフレームワークって
イベントハンドラなどのユーザーコードに制御を渡す前後で
一時的に状態を変えたりしてることが多いから、
それ以外のタイミングで触られると壊れる
結局それを防ごうとするとユーザーコードの実行タイミングまでブロックすることになるので、
Invokeと変わらなくなる

611:デフォルトの名無しさん
17/03/23 08:14:01.02 HovpjxiM.net
>>584
> マルチスレッドにしようと思ったらできるんだから
話がループしてるぞ
やればできるけどコールバックとかでロックの管理が面倒だしUIだから極限まで性能追い求める必要もないから
>> UI の操作は全てメインのUIスレッドであるイベントディスパッチスレッドから
>> 操作しなくてはならない、というルールを設けた。
ってことだろ

612:デフォルトの名無しさん
17/03/23 10:27:00.68 BTeOg9CT.net
>>564
COMのアパートメント問題を解決するためじゃないの?
厳密にはInvokeしなくて良いケースもあるけど、それを保証する方法が皆無に等しいという。
ウインドウメッセージ云々とか、本質とはかけ離れている気が。

613:デフォルトの名無しさん
17/03/23 12:30:56.91 Un9Q+jtZ.net
>>582
もう誰も使っている奴いないだろう、放棄されて保守だけが残っている。
こういう技術はいずれそうなるよ

614:デフォルトの名無しさん
17/03/23 12:53:23.45 Un9Q+jtZ.net
>>586
UI側がバージョン管理システムみたいな扱いをすればいいんだと思うけどね
非ロック型で同期をとる方法としては有効だと思う。
いわゆる
読み込んで、内容を変更して、読み込み時点データとともにUIに返す。
UI側は、ロックして読み込み時点と現状が一致しているなら置換してアンロックそして処理終了。
ロックオブジェクトが自分自身に限られるからデッドロックの可能性はない。
この方法の場合、読み出すだけならロック不要でいつでも読み込めるしね。
俺は、UIに関してはそういう設計にして自分のメソッドはすべてスレッドセーフだ。
長年の実績ある方法だし、このやり方は非常に優れていると思う。
更新失敗とリトライは発生するが、並列度はかなり高くなる。
デッドロックは皆無で、見通しも良い。

615:デフォルトの名無しさん
17/03/23 12:55:44.66 Un9Q+jtZ.net
>>589 に追加
これのよい所は、バージョン管理システムは普通誰でも使わなきゃならないもので
どういう風に機能させるのか誰にでもすぐ分かる。
問題が発生しても初心者に簡単に解決できるという点が良いと思っている。

616:デフォルトの名無しさん
17/03/23 17:07:47.97 EtPn1ouj.net
なんか酷いやり取りだね
マルチスレッドを根本的に理解してないのが何人かいるねw
スレッドセーフに作ることは高コストだから特に理由がない限りそうしないのは
マルチスレッド理解の初歩の初歩だと思うんだけど。
あれだ、UIは別スレッドからのアクセスを検出して例外投げるようになってるわけだけど、
例外が投げられなければ何も問題ないはずだ、っていうVBerな発想なのかねw

617:デフォルトの名無しさん
17/03/23 17:21:43.84 ncdnXTN/.net
.NETは実行コストよりも実装コストを重視する傾向にあるからね
スレッドセーフなformになってもいいと思うわ

618:デフォルトの名無しさん
17/03/23 17:24:03.63 30c+rZIc.net
>>592
君のコードはイベントハンドラが並列に実行されても大丈夫?
利用する側の実装コストも確実に跳ね上がるよ

619:デフォルトの名無しさん
17/03/23 18:15:58.21 ncdnXTN/.net
マルチスレッド動作のformにとは言ってないんだよ・・・

620:デフォルトの名無しさん
17/03/23 18:57:02.57 99dRkoLd.net
>>592
そこでwpfのバインディングですよ

621:デフォルトの名無しさん
17/03/23 1


622:9:28:24.32 ID:Un9Q+jtZ.net



623:デフォルトの名無しさん
17/03/23 19:30:23.84 Un9Q+jtZ.net
バインディングとか最悪やな、何処がどうなっているのか把握できる人間が居なくなって
誰にもメンテできなるなる典型w

624:デフォルトの名無しさん
17/03/23 19:32:40.10 Ei+8urX3.net
>>583
> GUIライブラリからアプリケーションをコールバックしたりと、
これってあるか?ピンとこない。
そもそも、UIってロックする必要があるか?
現状、UIスレッドとタスクスレッドは別で、結果的にプログレスバー等の更新にはinvokeを使うしかない。
これがウザイから「直に書き込みさせてくれ」というのが俺の希望。
そもそも、排他的な実装をしなければならない理由がないだろ。
プログレスバーなんて普通は共有しないし、
してたらしてたで「どちらの内容が表示されてもいい」が仕様になるのだから、
レーシングしたところで問題ない。
結果、リクエストがあったらただ更新すればいいだけ、それを表示すればいいだけ、で終わりじゃないか?
ファイルみたいにロックありきの物ではないと思うんだが。

625:デフォルトの名無しさん
17/03/23 19:35:54.46 g/kXmQSp.net
マルチスレッドアクセス可能なGUI採用してるシステムなんてあったっけ
UIスレッドモデルが遺産だというのなら
新しいシステム(Windowsに限らんぞ)ほど「そうなってはいない」はずだが
実際は最近のOS(やはりWindowsに限らない)でもUIスレッドモデルだ
何故だろうなあ
下手の考えなんぞ大抵は
「先人が思いついたけどあえてやらなかった」か「すでに失敗した」か

626:デフォルトの名無しさん
17/03/23 19:36:15.02 Un9Q+jtZ.net
Haskellみたいに極度に小さい記述で複雑なシステムが組めるのは確かに凄いんだよ
あれはマジ使える、ただし誰にでも使えるものでは無い。
こういう物は、チーム作業には向かない。
少人数で高度なプログラミングをするのには向いているがね。
で、C#はHaskellみたいなアプリケーションを作るために開発されたものなのかというと、それは違う。
誰でも使えるBasicの延長線上のものだ。
TaskもWPFもHaskellみたいな超絶技巧を目指しているだな、そんなものは要求されていないのに。

627:デフォルトの名無しさん
17/03/23 19:37:49.41 Ei+8urX3.net
>>595
あー、WPFのバインディングはこれを目指していたのか。
なるほど俺の要求だけならこれでいいわ。

628:デフォルトの名無しさん
17/03/23 19:39:47.03 FkdET+B0.net
不思議だな
新しい技術のおかげでプログラミングはますます簡単になってるのに
まるで難しくなったような意見が出てくる

629:デフォルトの名無しさん
17/03/23 19:40:57.33 Un9Q+jtZ.net
結局ね、マイクロソフトの技術者はコンセプトという物が理解できないバカの集団と化してしまったんだよ。
多分、社内政治とスタンドプレーの果てにこうなったんだろうなと。
だから、マイクロソフトは象牙の塔。
勉強しまくっているが自分のやっている事しか見えていない奴が音頭を取り始めてしまっている。

630:デフォルトの名無しさん
17/03/23 19:46:09.55 J2eFkRx5.net
ほーん、で?いちいち同意求めんなカス
知恵袋で恋愛相談してるクソアマかテメー

631:デフォルトの名無しさん
17/03/23 19:57:59.50 HovpjxiM.net
>>589
> UI側は、ロックして読み込み時点と現状が一致しているなら置換してアンロックそして処理終了。
一致してない時に再計算をする必要があるからその計算が軽い時に有効な方法
ちなみにバージョン管理システムでは他の人が変更してるからやり直せって言ったら使い物にならないのでいわゆるマージ処理を行うのでちょっと違う

632:デフォルトの名無しさん
17/03/23 20:26:39.42 HovpjxiM.net
>>598
GUI 組んだことないのか?
イベントってフレームワークからのアプリケーションの呼び出しだぞ
あとロックするのは GUI のフレームワークじゃなくてア�


633:vリケーションの方 マルチスレッド化したフレームワークだとイベントっていつ発生するかわからないのでお前みたいなよくわかってない奴が組むとデッドロックを引き起こしたりしやすいって話



634:デフォルトの名無しさん
17/03/23 20:27:34.06 99dRkoLd.net
>>601
但しコレクションに関してはBindingOperations・・・のおまじないが必要だ

635:デフォルトの名無しさん
17/03/23 20:48:03.89 Ei+8urX3.net
>>606
今時GUIしかやらんだろ。
が、まあこっちの認識がずれていたのは分かった。
>アプリケーションからGUIライブラリを呼んだり、
>GUIライブラリからアプリケーションをコールバックしたりと、
>双方向に呼び出すことが多く、
前者が「プログレスバーの更新」で、
後者が「 XXX.click += YYYY;」か。
確かに双方向だ。
で、ロックは必要か?
プログレスバーの更新なんて、ロックする必要ないだろ。
他もそうだと思うが。

636:デフォルトの名無しさん
17/03/23 20:49:29.54 30c+rZIc.net
>>606
具体的な最大の問題は、マルチスレッドアクセスを許容するとUIスレッド上で排他処理をしなきゃいけないことなんだよな
UIスレッドは多種多様なタスクによってタイトに使い回されるので、それをブロックすることは容易にデッドロックを引き起こす
UIスレッド上で別の処理Xが終わるのを待ってたら、XもUIスレッド上で呼び出される処理で
いつまでもXが呼ばれなくなりデッドロック、というのはよくあるパターン

637:デフォルトの名無しさん
17/03/23 20:55:57.96 30c+rZIc.net
>>608
そのプログレスバーの更新一つとっても中でどれだけ複雑なことをやっているかは君にも想像できるだろ?
君がロックしてるつもりがなくてもプログレスバーの更新処理を呼び出せば内部で当然ロックがかかる

638:デフォルトの名無しさん
17/03/23 21:00:57.40 Ei+8urX3.net
>>609
普通に組んだらデッドロックはしなく無いか?例えば、
1. UI <- Task_thread_A で Aが止まる。
2. Task_thread_A <- Task_thread_B で Bが止まる、ここまではありがち。
3. Task_threadB <- UI :これはねーよ。
UIスレッドがTaskスレッドを見てロックするという使い方は普通しないだろ。

639:デフォルトの名無しさん
17/03/23 21:14:48.29 Ei+8urX3.net
>>610
いや、ロックの必要はないだろ。
正確に言えば、外部からの明示的なロックが必要無いように作れば作れるだろ。
今そうなってないだけで。
要するにプログレスバーを UI, Task_thread_A, Task_thread_B の
どこからも更新出来るようにしたいとして、
全部、 progressBar.value = x; と書かせろ、と言いたいだけで。
内部的に細かくロックして、順に処理するのはCLRが勝手にすればいい。
その結果、それぞれのスレッドが微妙にロックするのも仕方ない。
ただ、循環ロックにならない限り、デッドロックにはならないだろ。
そして普通に書けば、循環ロックにはならないだろ。

640:デフォルトの名無しさん
17/03/23 21:17:21.47 5A+rvbXC.net
独りで仕方ないと思って存分に射精してろハゲ

641:デフォルトの名無しさん
17/03/23 21:24:07.98 NnBP2eXC.net
>>608
GUIしかやらない?どこの世界の話だよ

642:デフォルトの名無しさん
17/03/23 21:27:34.82 VjAjr2s9.net
>>589
アトミックなデータでない限り、読み出しでロックが不要は誤り。
更新中の中途半端なデータが読みだされたらどうすんの。

643:デフォルトの名無しさん
17/03/23 21:30:44.46 5A+rvbXC.net
生兵法はケガの元だな
毛がなくて良かったね~

644:デフォルトの名無しさん
17/03/23 21:32:55.65 HovpjxiM.net
>>608
> あとロックするのは GUI のフレームワークじゃなくてアプリケーションの方
の意味を理解してないのかよ...
そりゃ単純にプログレスバーに表示するぐらいなら問題は発生しないよ w
例えば複数の銀行口座の預金額を表示して振り込みを行うアプリケーションを作るとして
他の端末から入/出金があるのです定期的に預金額を更新しようとしたら各口座をロックして値を読み出してロック解除して画面を更新するだろ
でないと額の不整合が起きるからな
このロックして時に振り込みボタンが押されたら当然こっちも振り込み元と振込先の口座をロックしないとダメだろ
でこのロックの順番がテレコになってたら簡単にデッドロックをするって訳
もちろんちゃんとロック順序を考えて組めばいいんだけどでかいシステムをよくわかってないドカタに組ま


645:せることを考えたらわざわざそんな危険な構造にする意味がないってこと 前にも書いたけどUIなので超高速で画面のあちこちが更新できても意味ないしな



646:デフォルトの名無しさん
17/03/23 21:33:06.10 0wLqn0eU.net
>>588
寝ぼけるのはいいかげんにしろ。

647:デフォルトの名無しさん
17/03/23 21:34:23.52 5A+rvbXC.net
3行以上はキチガイ

648:デフォルトの名無しさん
17/03/23 22:20:43.54 ncdnXTN/.net
>>617
> 定期的に預金額を更新しようとしたら各口座をロックして値を読み出してロック解除して画面を更新するだろ
そういう糞UIでもつくれるけど、まともだったらやらないよ・・・

649:デフォルトの名無しさん
17/03/23 23:30:21.13 u0oYY3Ci.net
>>620
で、お前はどうやるんだい?

650:デフォルトの名無しさん
17/03/23 23:38:12.29 uQaoHdGv.net
普通は読みだす時はロックなんてしないよw
複数のデータの不整合が問題になる場合は微妙だけど、その場合でも
2回一致するまで読む方が低コスト

651:デフォルトの名無しさん
17/03/23 23:39:06.22 uQaoHdGv.net
っていうか、何でこんなマルチスレッドの初歩みたいな話になってるの?w

652:デフォルトの名無しさん
17/03/23 23:47:48.47 Ei+8urX3.net
てす

653:デフォルトの名無しさん
17/03/23 23:50:59.28 Ei+8urX3.net
>>617
ちげーよ。まあ結論としては、簡単に出来るけどC#はやらなかった、というだけだ。
そして俺はこの選択は間違いだったと見るね。
実装例としては以下。(C#の文法は知らないので真似てみた。適宜脳内修正よろしく)
//ここにコードを書いたのだが、403 Forbidden になるぜorz
mutexを使う場合、mutex確保中に他ロックを取りに行かなければデッドロックはしない。
或いはthread_IDを付けておいて、UIなら直接変更、その他ならinvokeにしてもいい。
いずれにしても、ユーザー側にはinvokeが見えなくなる(隠蔽される)
これの方が良かったと思うよ。いちいち混乱しなかった。
そちらの例は、2人のユーザ間でのデッドロックであって、
俺が今話しているUI/タスクスレッド間の例じゃないじゃん。
なお、解法は、普通に「両方取れなかった場合は一旦全部リリースしてリトライ」でいい。
ただし今時はそれはDB任せで、ユーザ側でのロック管理なんてしない(はず)

654:デフォルトの名無しさん
17/03/23 23:52:19.70 FkdET+B0.net
スレ読み返すと細かいことはどうでもいいけどとにかくInvokeしたくないプロパティでアクセスさせろって暴れてる変な子が居るように読めるんだが
Invokeを適当なプロパティでラップしろで終わる話じゃないのこれ?

655:デフォルトの名無しさん
17/03/23 23:53:41.78 u0oYY3Ci.net
>>622
ケースバイケースだろ
そもそも >>617 は説明のためのサンプルだから不満なら両方書き込みのケースを考えればいいだけ
>>623
マルチスレッドGUIフレームワークに夢見てる奴がいるからでしょ w

656:デフォルトの名無しさん
17/03/23 23:54:44.80 Ei+8urX3.net
>>626
その通りだ。そしてそのコードを貼ろうとしている。
つか、貼らなくても分かるんならもういいね。

657:デフォルトの名無しさん
17/03/23 23:57:20.64 u0oYY3Ci.net
>>625
> 俺が今話しているUI/タスクスレッド間の例じゃないじゃん。
そんなことを言ってるのお前だけ
>>583 をちゃんと読み返せよ

658:デフォルトの名無しさん
17/03/24 00:00:02.01 Lq7k+m1v.net
>>622
そんな力業してないでリーダー/ライターロック使いなよ。
比較のループとかデータ量次第ではCPUパワーの無駄遣いだろ。

659:デフォルトの名無しさん
17/03/24 00:07:18.67 P/PrHj1p.net
既製品に文句があるなら自分で作ってgithub
これができないプログラマはいつまでも三流のまま
コードを書き使ってもらい持論を証明するんだよ

660:デフォルトの名無しさん
17/03/24 00:13:35.16 OAgok+ci.net
Windows Formsの場合は、単純にFormがActiveXコンテナになり得るから、
アパートメントの制限に対応するために用意された、実装上の都合による物だよ
おそらく、ロックの問題ではなく
リソースリークを根本的に解決する方法がないから用意された手続きなんだよ。
ラップして


661:解決できると思うなら、それで良いんじゃないか



662:デフォルトの名無しさん
17/03/24 00:14:57.73 gW3AbLz/.net
だからUIスレッドが気になるなら、wpfでMVVMやれば解決でしょうに


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch