ふらっと C#,C♯,C#(初心者用) Part140

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 9e9f-LwdJ)
垢版 |
2018/10/04(木) 18:56:38.41ID:JnxMNCXd0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part139
https://mevius.5ch.net/test/read.cgi/tech/1533466544/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2018/11/24(土) 08:38:33.58ID:kuH8s62I0
ちゃんとした名称知ってる俺スゲーってか?
そこまでしてマウント取りたいものかね w
2018/11/24(土) 08:49:29.06ID:IRw8AAbl0
c#でもインナークラスと言って間違いちゃうよ
公式でもね
2018/11/24(土) 10:32:41.42ID:QDlc1GIX0
むしろnested classなんて聞いたことないわ
2018/11/24(土) 11:34:11.91ID:VBkVIhNza
Javaだとメソッド内でクラス定義できるからネストだと意味的に不自然なんだよ
2018/11/24(土) 12:05:57.96ID:WtZSNTCR0
>>655
Java屋さんいらっしゃい
2018/11/24(土) 13:19:32.37ID:QDlc1GIX0
>>652
>>657
こいつ多分勉強出来ないタイプ。
C#の関連書籍にはnestedclassなんて単語は出てこない。
更に用語で検索するとむしろjavaよりの言葉であることが判明。つまり、にわかの誤った認識でドヤ顔しちゃう可哀想な典型。以降スルー推奨
2018/11/24(土) 13:30:59.43ID:vw8dRG/XM
>>658
さすがに可哀想だから教えておくか
C#だとユーザー定義型はクラスだけじゃないから、用語としてはclassよりtypeが好まれるの
nested types でググってみ?
2018/11/24(土) 13:34:12.99ID:MaS7Khub0
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/nested-types
nested typeまたはinnerともかいてあるね
2018/11/24(土) 13:51:48.22ID:wRaDaS++0
>>653
被害妄想酷くない?
2018/11/24(土) 13:58:36.09ID:dVQ/sIVoM
ほんとマウンティングしかしない連中だな
2018/11/24(土) 14:32:36.02ID:kuH8s62I0
>>661
>>654-660見てもそれ言える? w
2018/11/24(土) 15:09:18.13ID:WtZSNTCR0
>>658
お前検索してないやろw
2018/11/24(土) 15:13:42.72ID:nuCJ8Tz/0
間違ったことに突っ込み入れて訂正して「マウンティング」とか無いわ
違ったこと言い続けるアホならともかくこの件は>>660で終わっているし
2018/11/24(土) 15:24:23.92ID:MaS7Khub0
だよな。普通に訂正、反論するだけでなんでもかんでもかんでもマウントはないよな。
喧嘩ごしでやってるならマウントって言ってもわかるけど。
だから>>652は別にマウントでもないな。まあ細かいとは思うが
2018/11/24(土) 15:50:14.83ID:X9wbQk6q0
初心者向けC#のサイトでGUIプログラムの例があったので入力してみました。
しかし
 using System.Windows.Controls;
でコンパイルエラーになります。 Controlsなんてネーヨ!エラーです。
正しくは、どこでしょうか?
ちなみに環境なんですがubuntu16で、MonoDeveloperを使っております。
2018/11/24(土) 16:05:53.32ID:KjMkY0qza
>>667
System.Windows.Controls名前空間以下の型(例えばControlクラス)は
PresentationFramework.dll というDLLで定義されているから
そのDLLを参照に追加する必要がある
どの型がどのDLLに属しているかは、MSDNやMicrosoft Docsでその型のページを探して
上の方にあるAssemblyの箇所を見ればわかる
例えばControlの場合は https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.controls.control?view=netframework-4.7.2

ただ肝心の、MonoDeveloperで参照を追加する方法は俺には分からない
2018/11/24(土) 16:31:21.34ID:IUSP2F7UM
>>665-666
はいはいすごいでチュねー
これで満足か? w
2018/11/24(土) 16:42:28.73ID:eoAr82J80
どうでもいいけどインナークラスなんて使うなよ
未来は誰にも予想できない
2018/11/24(土) 16:46:50.34ID:NR09riDN0
Guid.NewGuid()が重複した人いますか?
2018/11/24(土) 16:49:51.50ID:WtZSNTCR0
ねーよ
2018/11/24(土) 16:57:20.53ID:SHV38fMb0
>>669
他人の満足とか他人の心配より自分の馬鹿な頭心配しとけよw
2018/11/24(土) 16:59:12.41ID:ntzumrir0
2点ほど、
pictureboxに書いた線やらマルやらを書き終えたらボタンを押しもう書けないようにロックするにはどうしたらいいですか?

フォーム2で書いたpictureboxの絵をボタン投下時にフォーム1に同じ絵をコピーしたい場合はどうしたらいいですか?
2018/11/24(土) 17:04:30.23ID:kuH8s62I0
>>673
お前の日本語理解力が心配だよ w
2018/11/24(土) 17:08:20.29ID:EV3fc7VB0
>>674
最初のはpicturebox.Imageを書き込み不能にしたいってこと?そっちはわからない
2つめのは用途による
picturebox2.Image=picturebox1.Image;//これは1を書き換えるとそのまま2に反映される
picturebox2.Image=new Bitmap(picturebox1.Image);//これはいわゆる普通のコピー
ImageがBitmapでなくMetaFileならこれは使えないけど
2018/11/24(土) 17:10:52.63ID:SHV38fMb0
>>675
おまえの被害妄想の方が心配だわw
どうやったら>>652がマウントとかそこまで卑屈になれるかww
2018/11/24(土) 18:03:02.82ID:kuH8s62I0
>>677
だからその後のレス見ろよ…

> >>654-660見てもそれ言える? w
2018/11/24(土) 18:09:44.70ID:wRaDaS++0
>>678
それも見た上でレスしたぞ
2018/11/24(土) 18:49:18.12ID:gGGjjoOQ0
それ以前に >>1 を読めよ。
>なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
2018/11/24(土) 18:55:03.96ID:kuH8s62I0
>>679
で、>>654-660はマウント合戦じゃないとな?
そうならもう見解の相違というしかない
2018/11/24(土) 20:27:17.85ID:3uyeEm6u0
マウンティングか否かの議論を相談室送りにしてもあっち困るだろ
2018/11/24(土) 21:38:37.28ID:EV3fc7VB0
>>676にキャスト不足とか誰も突っ込んでくれないw

>>674
Form1で書いたpictureboxの絵をボタン投下時にForm2に同じ絵をコピーの例
https://ideone.com/ifdvrf
Visual StudioでC#の新しいプロジェクトを作って自動生成されたcsを全部消して代わりにダウンロードしたcsを既存の項目として追加して実行
Form1ではマウス左クリック+ドラッグで描画、Form2でCopyをクリックするとその時点のイメージをコピー
Enableのチェック外すと描画中止
2018/11/26(月) 11:03:50.04ID:SESNl2J0d
何だかんだでc#の勉強を始めることになったんですけど、なにぶんそういう知識はまるで無いのでどう勉強したらいいかさっぱりです
とりあえず初心者向けの参考書とc#を打てるなんちゃらスタジオがあれば大丈夫でしょうか
2018/11/26(月) 11:21:34.31ID:SVaivieI0
>>684
自分に合った参考書やサイトを見て勉強しながら
VisualStudioで試行錯誤しながらやっていくしかない

自分の周りにC#について教えてくれる人がいるなら
どんどん聞いて吸収していくのが一番いい

とにかくサンプルコードを打ち込んだりしながら
想像力を働かせて覚えていくしかないよ
そのうち視界が開けて来て作りたいものが作れるようになる

作れるようになったらまず、簡単なものからにするべき
いきなり難しいものを作ろうとすると潰れるよ(天才なら別だが)
アラーム時計やカレンダーや画像ビューアあたりから始めるのがいいと思う
2018/11/26(月) 12:15:21.72ID:SESNl2J0d
>>685
ありがとう、帰りに初心者の自分に合いそうな優しい参考書を買ってみるよ。 とりあえず基礎からみっちり覚えることにするね
2018/11/26(月) 15:45:06.75ID:qFYm+H7r0
コンソールアプリにてコンソール自身へのIME制御はハードル高いのでしょうか?
ひらがなモード、半角英数モードをコンソールアプリ側で切り替えたいと思い色々ググって試してみたところ、うんともすんとも行きません
大人しくFormアプリにするべきなのでしょうか
688デフォルトの名無しさん (ワッチョイ 238a-J8rx)
垢版 |
2018/11/28(水) 03:51:20.87ID:W51sdDs/0
簡易HttpServerを作りたいのですが、以下のコードを実行してアクセスすると、"GET"が2回コンソール出力されます。
クライアントからのGETは1回しか受信していないと思うのですが、何故でしょうか。
https://ideone.com/Nr02QL
2018/11/28(水) 05:59:27.93ID:NH2f0caoM
内容は分からんがConsole.WriteLine以外にOutputStreamのどれかがコンソール出力してたりはしないの?
2018/11/28(水) 09:38:11.53ID:G4kzubka0
ブラウザでアクセスしたら最初の1回はfaviconリクエストが追加要求されたりするけど
RequestのUrl確認した?
2018/11/28(水) 11:21:23.50ID:e/TO460qM
良い指摘だぬ
2018/11/28(水) 12:49:32.68ID:VpsTLnkwd
マーシャリングが面倒でも負荷の高い処理はC++とかで組むべき?
2018/11/28(水) 12:59:30.21ID:W51sdDs/0
>>690
おっしゃる通り、faviconリクエストでした。
本当にありがとうございます。
2018/11/28(水) 13:15:16.62ID:L6JkQudHd
どういたしまして
2018/11/28(水) 13:16:32.80ID:xrfZ5xLeM
>>692
劇的に効果あるなら
マルチタスクにしてもいいし、GPGPUとか、openCL(作り方によればCPUでもGPUでも動かせるし、併用でフル実行させるとやりきった感半端ない)とか今なら色々あるよ
2018/11/28(水) 13:26:20.94ID:cyvzVFzDM
>>692
まずはアルゴリズムの改良を検討する
スクリプト言語だとCPUバウンドな処理はC++に比べて数桁遅いから、
許容範囲の処理時間を達成するためにはスクリプトのままアルゴリズムの改良を頑張るよりもC++で力技の方が結果的に早い(速い、ではない)ことも多い
一方C#はせいぜいC++の数倍のオーダーであり、その程度ならアルゴリズムの改良によって簡単に逆転する
2018/11/28(水) 15:38:58.09ID:e/TO460qM
夢の最速目指すよりも
仕様決めないときりがないしな
698デフォルトの名無しさん (ワッチョイ 839f-nfAC)
垢版 |
2018/11/28(水) 16:41:31.36ID:JaydQRfC0
SecureStringは使うなって書いてあるんだけど
じゃあ代わりに何使えばいいの?教えて
2018/11/28(水) 17:06:53.33ID:BP3XEZ+Jd
HANDLE CreateFile(
LPCTSTR lpFileName, // ファイル名
DWORD dwDesiredAccess, // アクセスモード
DWORD dwShareMode, // 共有モード
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // セキュリティ記述子
DWORD dwCreationDisposition, // 作成方法
DWORD dwFlagsAndAttributes, // ファイル属性
HANDLE hTemplateFile // テンプレートファイルのハンドル
);


lpSecurityAttributes
取得したハンドルを子プロセスへ継承することを許可するかどうかを決定する。

個プロセスへの継承とはどういう意味なのでしょうか
2018/11/28(水) 18:13:59.61ID:KWr5egyF0
スレチ
2018/11/28(水) 18:19:28.62ID:urROSKq40
ここでWin32とかの話はスレチだわな。

セキュリティ記述子の話をすると、所有者セキュリティID, グループSID, 任意 アクセス制御リスト, システムアクセス制御リスト, アクセストークンの話で本が書ける。無難にNULLを入れとけばよい。

C#だとSystem.Intptr.Zeroだな
2018/11/28(水) 18:34:17.60ID:urROSKq40
子プロセスの継承の例は、パイプを使ったプロセス間通信とかでしょうね。
以上、スレチごめんなさい
2018/11/28(水) 19:36:37.13ID:whfYkWqO0
pictureboxの中に400☓800の四角を書き、線ボタン、丸ボタンを作って、それを投下したら四角の中に絵を書いくもの作りました。


@データ番号入力(001)3桁
A上記のpictureboxが表示
B線やら丸やら書く
Cデータ内容保存
この繰り替えし。

この時のCで書いた情報の保存方法はどうしたらいいと思いますか?座標点の他にどんな情報があったらいいですかね?
もう一回表示したい時とか
2018/11/28(水) 19:47:06.26ID:G4kzubka0
保存方法? 好きにしろとしか言えない
どんな情報って、そりゃ線やら丸やら書いたときに使った情報だろ
2018/11/28(水) 21:24:08.05ID:WfNZCJmP0
実行中は線引く際のストローク、円を描く際のパラメーターをリストで保存してくのが定番。アンドゥリドゥのために。
保存するときは、imageに変換しても良いし、描画履歴の情報を保存しても良い。
何がしたいかによるとしか
2018/11/28(水) 21:33:46.64ID:wlMFFO6p0
>>698
https://github.com/dotnet/platform-compat/blob/master/docs/DE0001.md
> The general approach of dealing with credentials is to avoid them and instead rely on other means to authenticate,
> such as certificates or Windows authentication.
資格情報を扱う一般的な方法は、資格情報を回避し、代わりに証明書やWindows認証などの他の認証方法に依存することです。

回答になってないな…。
2018/11/29(木) 11:59:38.79ID:w8w+eTQL0
自作のコントロールでFontプロパティを実装しようと考えています。

FontはIDisposableを継承しているので適切なタイミングでDisposeを実行する必要があると思うのですが
・コントロールのDispose内
・プロパティのsetter
この2箇所でDisposeの呼び出しを実装すれば大丈夫ですか?他にDispose呼び出しが必要な所は無いですか?

具体的には↓のように実装しようと思っています
https://ideone.com/rJl7Fj
2018/11/29(木) 12:58:03.97ID:GYTobZd0a
>>707
別のオブジェクトが同じFontの参照を握ってる可能性もあるから
自分の都合で勝手にDisposeするわけにもいかんでしょう。

ほっておくしかないのでは。

どうしても気になるならFontプロパティのセッターでFontの参照そのものをバッキングフィールドに
キャッシュするのではなく、等価なFontを再構築可能な情報をキャッシュするようにするとか

本当はこういうプロパティーの実装はよくないみたいだけど(ゲッターの返す値が毎回別のオブジェクトになるから)
2018/11/29(木) 13:59:52.58ID:w8w+eTQL0
A : myControl.Font = new Font("MS UI Gothic", 9);
B : myControl.Font = mainForm.Font;

毎回上記のAのようにするならDisposeしても大丈夫だけどBみたいなことをすると
mainFormのフォントが勝手にDisposeされることになるからまずいから
自動プロパティとかにしてDisposeはGCに任せるか、内部的にはフォント名、サイズとかの
情報だけ持たせてgetterで毎回newする形にするしかないってことですかね?
2018/11/29(木) 20:54:36.67ID:LaO1Tjsi0
>>707
Control継承するとFontプロパティもついてくると思うけど別に使うのかな?
>>709
蛇足気味だけど厳密にやりたいなら
set
{
Font ft = value as Font;
if (null != ft)
{
if (null != _myFont) _myFont.Dispose();
_myFont = new Font(ft.FontFamily, ft.Size, ft.Style, ft.Unit);
}
}
こんな感じかな。他はそのままで
set { _myFont = value; }でも大した問題起こらない気もする
もっとまじめに考察したいならILSPYでControlのFontプロパティがどうやっているか追っかけて確認してみるとか
2018/11/30(金) 00:32:08.25ID:gtVMbwTAd
>>695
>>696
ありがとう
まずはアルゴリズムから見直してみます
2018/11/30(金) 05:27:00.98ID:V3k5uXuMa
効果音(WAVファイル)鳴らしたいのだけど、VisualStudioのどこからインポートすればいいのでしょうか?
2018/11/30(金) 06:15:02.76ID:J243joLf0
解読班お願いします
2018/11/30(金) 08:02:22.89ID:6sbZJ6hoM
プログラム内に、リソースとして音楽ファイルを埋め込みたいのだと思われます
2018/11/30(金) 08:18:04.02ID:ntAUD0F8p
ビルド完了時にファンファーレなどを鳴らしたいのだと思われます
2018/11/30(金) 09:21:26.51ID:u/ExA4KN0
[Ctr]キー + [r]キーを押して、mmsys.cpl と入力して[Enter]キー
「サウンド」タブのプログラムイベントにあったはずだ

ってか、これはスレチだろ
717デフォルトの名無しさん (ワッチョイ 5fa5-DrDc)
垢版 |
2018/11/30(金) 20:20:52.54ID:3yrtWl4o0
単にwavファイルを頭から再生するだけならSoundPlayerクラスでいいだろうけど
ループポイントいじったり波形まで触るような凝った再生するならWin32APIを使わないとダメだろうな
ってことが聞きたいんじゃね?
718デフォルトの名無しさん (スププ Sdba-aHfj)
垢版 |
2018/11/30(金) 21:33:39.29ID:7tGVT0o8d
math.powでなくfor使ってa^b乗はどうやったらうまくいきます?
2018/11/30(金) 21:48:55.31ID:6sbZJ6hoM
誰か答えてやってくれ
俺には無理だ
2018/11/30(金) 22:09:20.57ID:lmmOnpkX0
たぶん>>718
https://ideone.com/oocK7M
こういうのを求めているのでしょうか
うまくいく、の定義がよくわからないのでこんなんでかんべんしてけれ。
721デフォルトの名無しさん (スププ Sdba-aHfj)
垢版 |
2018/11/30(金) 22:17:19.14ID:n5lF99wkd
天才あざす
2018/11/30(金) 23:14:00.97ID:MkfLpznc0
>>717
wav ファイルの波形パターンを取り出してプログラムで適当に加工したあと win32api に渡すと音がなる、とかできるのでしょうか?API関数名はなんですか?
2018/11/30(金) 23:27:45.95ID:t8hABf910
>>722
ググってすぐにソースが出てくんじゃん
やる気ねーなら消えろ
2018/12/01(土) 00:01:20.94ID:J8cQMvWo0
>>723
thx!
waveOut がよさそうですね http://eternalwindows.jp/winmm/wave/wave00.html
2018/12/01(土) 01:36:14.22ID:fxOs/Chqd
>>718
マクローリン展開かな
2018/12/01(土) 15:10:50.09ID:BBiFvNwv0
For文でTaskの配列を使いたいんだけど

var task=new Task[10];
for(int i=0;i<10;++i)
{
int j=i; ←これ
task[i]=Task.Run(()=>{なんかjを使う処理;});
}

こんな風に変数の置き換えをしなきゃいけないのを処理する
なんか別のカッコいい方法ってありますか?
2018/12/01(土) 15:24:16.02ID:ueqzOD9Qa
>>726
var tasks = Enumerable.Range(0, 10)
.Select(j => Task.Run(() => {なんかjを使う処理;}))
.ToArray();
2018/12/01(土) 16:54:24.01ID:UFOjA6r40
>>726
var task=new Task[10];
for(int i=0;i<10;++i)
{
task[i]=Task.Run(()=>{なんかiを使う処理;});
}
2018/12/01(土) 17:01:29.48ID:6nS7jmt50
>>726
Parallel.Forじゃ駄目?
2018/12/01(土) 17:03:32.28ID:q6i9ekrsM
>>728
残念ながら君より質問者のほうがC#をよく理解している
俺も727派だけど、別解としては for じゃなくて foreach (var i = Enumerable.Range( なら i をラムダ内でそのまま使っても問題ないよ(C#5以降)
731デフォルトの名無しさん (ワッチョイ b39d-hzet)
垢版 |
2018/12/01(土) 17:04:04.70ID:QCT+flDQ0
static void Main()
{
Console.WriteLine("Begin");
var tasks = new []
{
Task.Factory.StartNew(() => Console.WriteLine("Task1 is running")),
Task.Factory.StartNew(() => Console.WriteLine("Task2 is running")),
Task.Factory.StartNew(() => Console.WriteLine("Task3 is running")),
};
int index = Task.WaitAny(tasks);
Console.WriteLine("Index = {0}", index);
Console.WriteLine("End");
}
}
New[]ってなに?
2018/12/01(土) 17:08:08.57ID:6nS7jmt50
>> 731
new Task[]の省略形
型は{}の初期化部から推論してる
733デフォルトの名無しさん (ワッチョイ b39d-hzet)
垢版 |
2018/12/01(土) 17:16:05.12ID:QCT+flDQ0
ああそいうことなの、ありがとう。推論しすぎだよ。W
734デフォルトの名無しさん (ワッチョイ b39d-hzet)
垢版 |
2018/12/01(土) 17:21:20.93ID:QCT+flDQ0
tasks Newしてるのにスタートしてないのも推論?
2018/12/01(土) 17:28:40.81ID:6nS7jmt50
>>734
関係ない。単なる勘違い。
var tasks = new Task[]は配列の入れ物を作成してるだけで、
配列の中身はTask.Factory.StartNew()でスタート済み。
736デフォルトの名無しさん (ワッチョイ 0eeb-hzet)
垢版 |
2018/12/01(土) 18:50:52.76ID:4Hpcan/K0
便乗で低レベルな質問してすまんが、なんでこれの実行結果って10のみになるの?
なんか0〜9の10行になりそうな気がしちゃったんだけど・・・・どうして!?

using System;
using System.Threading;
using System.Threading.Tasks;

public class Test
{
public static void Main()
{
var task = new Task[10];
for(int i=0;i<10;i++)
{
task[i]=Task.Run(()=>Console.WriteLine(i));
}
}
}
737デフォルトの名無しさん (ワッチョイ 0eeb-hzet)
垢版 |
2018/12/01(土) 18:58:25.70ID:4Hpcan/K0
たまたまメインスレッドで動いたやつだけConsole.WriteLineが動くとかそういうのなのかな?
2018/12/01(土) 19:01:42.33ID:jlV8A3xFa
>>736
ラムダ式の変数のキャプチャを理解した方がいいよ
2018/12/01(土) 19:36:32.06ID:IDJAnGVn0
>>736
http://www.atmarkit.co.jp/fdotnet/extremecs/extremecs_06/extremecs_06_04.html
740デフォルトの名無しさん (ワッチョイ 0eeb-hzet)
垢版 |
2018/12/01(土) 21:00:00.35ID:4Hpcan/K0
ありがとう!なんで10になるのかはわかったよ
ただ次になぜ10が10個並んじゃわないのかが全然わかんなくなってきたぜ・・・・
2018/12/01(土) 21:02:51.31ID:IDJAnGVn0
>>740
forループの実行中にTaskが開始されてるからでしょ
742デフォルトの名無しさん (ワッチョイ 0eeb-hzet)
垢版 |
2018/12/01(土) 22:13:11.50ID:4Hpcan/K0
>>741
forループ中にTaskが開始されるとなぜ1つになっちゃうのか全然わからなんだ・・・・
2018/12/01(土) 22:53:47.54ID:THW+jwSM0
メインスレッドが即座に終了して出力なしの方がザラだと思うが
明示的に待たないとTaskの完了など知った事ではないよ

というか徒に増やした所でメモリ帯域とかで躓くのがオチ
Taskは非同期だし、並列実行が望みならGPGPUなりを…
2018/12/01(土) 22:57:20.39ID:q6i9ekrsM
たかが10要素だし、配列に入れてるんだからWhenAllとかで待てるだろ
直行する問題を分離できないおバカさんかな
2018/12/01(土) 23:13:24.31ID:BBiFvNwv0
>>727-730
ありがとうございました。いい方法あったんですね
そろい踏みで
var task = new Task[10];
for (int i = 0; i < 10; i++)
{ int j = i; task[i] = Task.Run(() => Console.WriteLine("a={0}", j)); }

var tasks = Enumerable.Range(0, 10).Select(i => Task.Run(() => {Console.WriteLine("b={0}",i);})).ToArray();

var task2 = new Task[10];
for (int i = 0; i < 10; i++)
{ task2[i] = Task.Run(() => Console.WriteLine("c={0}", i)); }

foreach (var i in Enumerable.Range(0, 10)) { Console.WriteLine("d={0}", i); }

Console.ReadKey();

で何回か試してみると、foreachだけは必ずタスクの起動順が順番通りで揃うんですね
ちょっとこれを使ってみます
2018/12/01(土) 23:22:08.99ID:R6GB4fM+0
>>745
foreachのはTask作ってない。他に合わせるなら
foreach (var i in Enumerable.Range(0, 10)) { Task.Run( () => {Console.WriteLine("d={0}", i); } }
でないとおかしい。
2018/12/01(土) 23:22:16.02ID:THW+jwSM0
foreachだけはTaskどころか普通の同期処理だが…?
2018/12/01(土) 23:23:22.50ID:q6i9ekrsM
>>745
いやそれforeachはTaskによる実行になってないぞ
foreach使うならループの中は>>728のおバカさん版と同じにしないといけない(ただし>>728とは違って意図通りに動作する)
2018/12/01(土) 23:28:44.22ID:UFOjA6r40
意味わからんな
2018/12/01(土) 23:57:08.18ID:cajtydEwd
>>749
この馬鹿ちんが
2018/12/01(土) 23:59:39.62ID:BBiFvNwv0
>>746-749
ああ、ほんとだ>>745で書いたの間違ってら。。。
何やってんだ俺。。。

var task3 = new Task[10];
foreach (var i in Enumerable.Range(0, 10))
{
task3[i] = Task.Run(() => Console.WriteLine("d={0}", i));
}

これであってんのかな
2018/12/02(日) 00:15:47.90ID:y4RDtfAe0
そんな簡単なコード間違えるような記述方式なのに頭おかしい
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況