トップページ > プログラム > 2016年12月24日 > hhClfuXq0

書き込み順位&時間帯一覧

1 位/201 ID中時間01234567891011121314151617181920212223Total
書き込み数00000000000000010331200010



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん (ワッチョイ e33c-IeCC)
923 (ワッチョイ e33c-IeCC)
ふらっと C#,C♯,C#(初心者用) Part125 [無断転載禁止]©2ch.net

書き込みレス一覧

ふらっと C#,C♯,C#(初心者用) Part125 [無断転載禁止]©2ch.net
923 :デフォルトの名無しさん (ワッチョイ e33c-IeCC)[]:2016/12/24(土) 15:17:55.11 ID:hhClfuXq0
並列処理を行いたいんですがどうすればいいでしょうか?

しかも複数の並列処理で同一のコントロール(TextBox1.text)
に同時に書き込めるようにしたいです(書き込む順番はきにしません)
あとそれぞれの並列処理を無限ループで繰り返し処理を行いたいと
思っております。

どなたか教えてください。どうぞよろしくお願いします
ふらっと C#,C♯,C#(初心者用) Part125 [無断転載禁止]©2ch.net
933 :923 (ワッチョイ e33c-IeCC)[]:2016/12/24(土) 17:08:45.84 ID:hhClfuXq0
みなさんありがとうございます。
自分なりに調べて以下の通りつくってみました
「3秒まってコンソールに文字列を出力する」という処理を並列で動作させたかったのですが
どうもそれぞれの処理が単体で実行されるだけで並列処理になっていないようです。
以下の処理を並列で実行できるようにするにはどうすればよろしいでしょうか?
private async void button1_Click(object sender, EventArgs e)
{
while (true)
{
await Task.Run(() => Thread.Sleep(3000));
Console.WriteLine("タスク完了");
}
}
ふらっと C#,C♯,C#(初心者用) Part125 [無断転載禁止]©2ch.net
937 :923 (ワッチョイ e33c-IeCC)[]:2016/12/24(土) 17:33:48.36 ID:hhClfuXq0
>>936
はいそうです
2個でも問題ありません。
簡単なサンプルとか頂ければ大変助かります
大変恐縮ですがどうぞよろしくお願い致します
ふらっと C#,C♯,C#(初心者用) Part125 [無断転載禁止]©2ch.net
939 :923 (ワッチョイ e33c-IeCC)[]:2016/12/24(土) 17:52:32.66 ID:hhClfuXq0
>>938
そうなんですね。ご指摘ありがとうございます。

ただ私の想定としては、「3秒待って出力」という処理を
複数同時に開始したいと思っておりました
ですがコンソールに出力されるタイミングは3秒おきに1処理分しか
出力されず、非同期処理と変わらない処理となっているような気がします

上で示したサンプルがわかりづらくて申し訳ありませんが
タスクは2個でも3個でも同時並列で処理できれば問題ありません
大変恐縮ですがご教示頂ければと思います
ふらっと C#,C♯,C#(初心者用) Part125 [無断転載禁止]©2ch.net
941 :923 (ワッチョイ e33c-IeCC)[]:2016/12/24(土) 18:29:36.15 ID:hhClfuXq0
>>940
ありがとうございます!
ちなみにテキストボックスなどに内容を出力することって出来ますでしょうか?
これらの処理をりようして
TextBox1.Textに内容を出力する処理をそれぞれのタスクに追加すると
エラーになってしまうようです。
お手数おかけしますがよろしくおねがいします。
ふらっと C#,C♯,C#(初心者用) Part125 [無断転載禁止]©2ch.net
943 :923 (ワッチョイ e33c-IeCC)[]:2016/12/24(土) 18:41:21.02 ID:hhClfuXq0
これだとやっぱり3秒毎に1処理実行されるだけなんですね・・・

async Task<string> TaskTest()
{
await Task.Delay(3000);
return "a";
}

private async void button1_Click(object sender, EventArgs e)
{
while (true)
{
TextBox1.Text += await TaskTest();
Application.DoEvents();
}
}
ふらっと C#,C♯,C#(初心者用) Part125 [無断転載禁止]©2ch.net
944 :923 (ワッチョイ e33c-IeCC)[]:2016/12/24(土) 18:51:54.77 ID:hhClfuXq0
>>942
ありがとうございます。
ただやっぱり並列にはなりませんでした・・・
なにがまちがってるんでしょうか・・・?
while (true)
{
await Task.Factory.StartNew(() =>
{
Invoke((MethodInvoker)(() =>
{
Thread.Sleep(3000);
TextBox1.Text += "a";
}));
});
}
ふらっと C#,C♯,C#(初心者用) Part125 [無断転載禁止]©2ch.net
946 :923 (ワッチョイ e33c-IeCC)[]:2016/12/24(土) 19:13:46.70 ID:hhClfuXq0
ありがとうございました!大変助かりました!
お手数おかけして申し訳ありませんでした
ふらっと C#,C♯,C#(初心者用) Part125 [無断転載禁止]©2ch.net
947 :923 (ワッチョイ e33c-IeCC)[]:2016/12/24(土) 20:17:57.50 ID:hhClfuXq0
>>945
おかげさまで仕事がはかどりました
改めてありがとうございました。
ただ、ソースをよく読んでみると
Parallel.Forというのがあるので
Task使わなくても問題なさそうですね
(C#歴は1ヶ月程度なので違ってるかもしれませんが)
ふらっと C#,C♯,C#(初心者用) Part125 [無断転載禁止]©2ch.net
950 :923 (ワッチョイ e33c-IeCC)[]:2016/12/24(土) 20:51:06.97 ID:hhClfuXq0
なるほど。ありがとうございました!


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。