!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part147
http://mevius.5ch.net/test/read.cgi/tech/1582100741/
■関連スレ
C#, C♯, C#相談室 Part94
http://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
ふらっと C#,C♯,C#(初心者用) Part148
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ df89-moxv)
2020/05/27(水) 20:28:41.27ID:Pggemlyq0231デフォルトの名無しさん (ワッチョイ 4dde-akQC)
2020/08/01(土) 19:19:48.95ID:1LAdFvqL0 >>230
住所録って書いてんじゃんメクラかよ
住所録って書いてんじゃんメクラかよ
232デフォルトの名無しさん (ワッチョイ 25ad-DBrF)
2020/08/01(土) 19:31:35.20ID:Yannm6rz0233デフォルトの名無しさん (ワッチョイ 41de-akQC)
2020/08/01(土) 19:43:37.72ID:EiwM5rD/0 まあ、そのまんま使えねーだろーから改修して使おうってんじゃねーの?
オープンソースの正しい使い方やん
オープンソースの正しい使い方やん
234デフォルトの名無しさん (ワッチョイ 25ad-DBrF)
2020/08/01(土) 20:12:27.90ID:Yannm6rz0 簡単な登録と削除ができるだけでいい住所録にそんなものが必要だとは思わんというか、
何かをカスタマイズしてその程度の住所録にするのは、ちょっとたいそうな気がする。
何かをカスタマイズしてその程度の住所録にするのは、ちょっとたいそうな気がする。
235デフォルトの名無しさん (ワッチョイ 7a6a-xE3T)
2020/08/01(土) 20:49:12.61ID:oCALSNxU0 エスパーすると作りたいけど右も左も分からんからお手本が欲しいってことかな
236デフォルトの名無しさん (ワッチョイ b178-xE3T)
2020/08/01(土) 20:51:54.45ID:xhSYh2050237デフォルトの名無しさん (ワッチョイ 8ede-akQC)
2020/08/01(土) 21:48:16.20ID:NKcPOHZ30 オープンソースってちょいっと触るには佇まいがでかすぎて流用には向かないことが多い
住所録のどこの部分の機能が必要か知らんけど
単にアドレス帳の登録、削除、編集の基本機能だけだったら1〜2日の内容だから
どっか入門サイトで似たようなの見つけて実装したほうが早いと思う
住所録のどこの部分の機能が必要か知らんけど
単にアドレス帳の登録、削除、編集の基本機能だけだったら1〜2日の内容だから
どっか入門サイトで似たようなの見つけて実装したほうが早いと思う
238デフォルトの名無しさん (ワッチョイ 4a32-RDrw)
2020/08/01(土) 21:52:38.29ID:+9Q20FKV0 スレ違いだったら申し訳ないです。
C言語をやろうととりあえずmacかったのですが、
どのソフトで開発環境作ったらいいでしょうか?
C言語をやろうととりあえずmacかったのですが、
どのソフトで開発環境作ったらいいでしょうか?
239デフォルトの名無しさん (ワッチョイ faad-B4k+)
2020/08/01(土) 21:54:22.30ID:G+VYcIGl0 >>238
ここCじゃなくてC#な
ここCじゃなくてC#な
240デフォルトの名無しさん (ワッチョイ 01da-i+jg)
2020/08/01(土) 22:04:49.38ID:8QGIO3XO0241蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd9a-JZhM)
2020/08/01(土) 22:06:32.74ID:LLVAByzud macは自由陣営じゃないから。。。
242デフォルトの名無しさん (ワッチョイ 4a32-RDrw)
2020/08/01(土) 22:11:32.98ID:+9Q20FKV0 わかりました
ありがとうございます
ありがとうございます
243デフォルトの名無しさん (ワッチョイ 7a05-Zvsf)
2020/08/02(日) 06:10:11.27ID:T2MIboAU0 c#で作ったbotからandoroidスマホに通知を送る良い方法はありませんか?
履歴を確認できる方法で。
今まではline-notifyでlineに送っていたのですが、新しいルート証明書をインストールしなくてはならなくなって別の方法を探しています。
履歴を確認できる方法で。
今まではline-notifyでlineに送っていたのですが、新しいルート証明書をインストールしなくてはならなくなって別の方法を探しています。
244デフォルトの名無しさん (ワッチョイ 8ede-akQC)
2020/08/02(日) 07:27:09.21ID:EizALxAu0245デフォルトの名無しさん (ワッチョイ 56bb-JV/9)
2020/08/02(日) 12:52:22.51ID:scrCUlqp0 データクラスって一時期C#にも付くんじゃないかって言われてたのに、一体どうなったの?
https://try.kotlinlang.org/#/Kotlin%20Koans/Introduction/Data%20classes/Task.kt
オートプロパティのおかげでJavaみたくはならないから要らないってこと?
https://try.kotlinlang.org/#/Kotlin%20Koans/Introduction/Data%20classes/Task.kt
オートプロパティのおかげでJavaみたくはならないから要らないってこと?
246デフォルトの名無しさん (ワッチョイ d663-MqbD)
2020/08/02(日) 13:54:59.45ID:xaz7GC4v0 9でrecordくるよ
247デフォルトの名無しさん (ワッチョイ d62c-cfsr)
2020/08/02(日) 14:51:37.50ID:umITGI3r0248デフォルトの名無しさん (アウウィフ FF09-QWST)
2020/08/02(日) 16:20:00.33ID:NsDY9jGSF ここはプログラムを描きたい人造りたい人向けのスレ
フリーソフトダウンロードして使いたい人は相応のスレへ逝くことをお薦めします
フリーソフトダウンロードして使いたい人は相応のスレへ逝くことをお薦めします
249デフォルトの名無しさん (ワッチョイ 875f-OjAs)
2020/09/03(木) 22:01:35.41ID:RMVHFRAl0 public interface Ixxxxx
{
int method1(int x);
}
インターフェイスについて質問です。
上ではメソッドの型を定義しているわけですが、
インターフェースの引数定義で、xのように変数を設定するのはどうしてなんでしょうか。
ここでは使われない変数なので、型のみで良いと思うのですが。
それから、publicを省略して、interfaceとだけ定義する理由はどうしてなのでしょうか。
classなら、publicを前置するのに。
{
int method1(int x);
}
インターフェイスについて質問です。
上ではメソッドの型を定義しているわけですが、
インターフェースの引数定義で、xのように変数を設定するのはどうしてなんでしょうか。
ここでは使われない変数なので、型のみで良いと思うのですが。
それから、publicを省略して、interfaceとだけ定義する理由はどうしてなのでしょうか。
classなら、publicを前置するのに。
250デフォルトの名無しさん (ワッチョイ 875f-OjAs)
2020/09/03(木) 22:10:50.18ID:RMVHFRAl0 ルート相対的URLを保存するクラスは何が適しているんでしょうか。
String型に、/root/abc/def を文字列として保存しているのですが、
適切な型があれば教えてください。
String型に、/root/abc/def を文字列として保存しているのですが、
適切な型があれば教えてください。
251デフォルトの名無しさん (テテンテンテン MM8f-wKT+)
2020/09/03(木) 23:38:56.88ID:FEiIVBqsM252デフォルトの名無しさん (ワッチョイ 5fad-SVp2)
2020/09/04(金) 00:15:18.15ID:yQcUkcYq0 引数名ないとドキュメント化する時にも困るしね
253デフォルトの名無しさん (ワッチョイ 5f24-VIJL)
2020/09/04(金) 11:28:01.48ID:M8Oq5rfA0 >>249
引数や戻り値の型をしっかり定義しないといけない理由は、ILやアセンブリといった低レベル知識を学習すればよく分かるよ
機械語レベルだとint、long、float、double〜etcはそれぞれ命令文が違う
だから引数や戻り値がバラバラな値型だとそれぞれの機械語を生成しなきゃならず共用化出来ない
逆に言うと参照型であればポインタだけで済むので実は共用化が出来る
なので参照型であればobjectとして定義をすれば実際に共用化可能(値型もboxingしてobject型にすれば同様)
引数や戻り値の型をしっかり定義しないといけない理由は、ILやアセンブリといった低レベル知識を学習すればよく分かるよ
機械語レベルだとint、long、float、double〜etcはそれぞれ命令文が違う
だから引数や戻り値がバラバラな値型だとそれぞれの機械語を生成しなきゃならず共用化出来ない
逆に言うと参照型であればポインタだけで済むので実は共用化が出来る
なので参照型であればobjectとして定義をすれば実際に共用化可能(値型もboxingしてobject型にすれば同様)
254デフォルトの名無しさん (ワッチョイ 4766-K5xR)
2020/09/04(金) 11:39:06.89ID:krKESdlN0 型のみで十分なのになん変数名まで書かなきゃならんの?って質問にその回答は適切ですか?
255デフォルトの名無しさん (ワッチョイ 5fad-SVp2)
2020/09/04(金) 12:06:19.79ID:yQcUkcYq0 >>253
その回答はズレてる
その回答はズレてる
256デフォルトの名無しさん (ワッチョイ 875f-OjAs)
2020/09/04(金) 12:46:23.59ID:YyY7xdI50257デフォルトの名無しさん (テテンテンテン MM8f-wKT+)
2020/09/04(金) 13:31:45.96ID:Cdgw0eXGM インターフェイスメンバに引数名が必要なのは名前付き引数のためでもある
名前付き引数ってのはmethod1(x:123)みたいな書き方のこと
正確には名前付き引数がC#に導入されたのは比較的最近なので時系列が逆なんだけど、
.NETはC#に限らずいろんな言語を動かすことを想定して設計されてるので名前付き引数のための要請についても元々考慮されてたというわけ
名前付き引数ってのはmethod1(x:123)みたいな書き方のこと
正確には名前付き引数がC#に導入されたのは比較的最近なので時系列が逆なんだけど、
.NETはC#に限らずいろんな言語を動かすことを想定して設計されてるので名前付き引数のための要請についても元々考慮されてたというわけ
258デフォルトの名無しさん (アウアウウー Sa8b-CqCa)
2020/09/04(金) 14:23:19.04ID:Utz5OTUqa >>257
下のコードは合法なのでさすがにそれは意味不明
interface IHoge
{
void Fuga(int x);
}
class Hoge : IHoge
{
public void Fuga(int y)
{
}
}
下のコードは合法なのでさすがにそれは意味不明
interface IHoge
{
void Fuga(int x);
}
class Hoge : IHoge
{
public void Fuga(int y)
{
}
}
259デフォルトの名無しさん (ワッチョイ 878c-XrX+)
2020/09/04(金) 14:29:57.19ID:G2vvVEFn0 引数名を変更するのってどういったケースを想定してるん?
260デフォルトの名無しさん (アウアウウー Sa8b-CqCa)
2020/09/04(金) 14:34:15.41ID:Utz5OTUqa 別に想定なんかしてないのでは?
単に違法にする理由がないだけかと
単に違法にする理由がないだけかと
261デフォルトの名無しさん (ワッチョイ 5f01-YnK0)
2020/09/04(金) 17:36:23.03ID:nh9T8LFU0262デフォルトの名無しさん (アウアウウー Sa8b-CqCa)
2020/09/04(金) 18:29:28.50ID:Utz5OTUqa >>261
当たり前やんw
当たり前やんw
263デフォルトの名無しさん (アウアウウー Sa8b-CqCa)
2020/09/04(金) 19:19:04.36ID:Utz5OTUqa あーインターフェイスのメソッドの仮引数が名無し定義を許す仕様になってたら
名前付きで呼び出せないよって言いたいわけか
確かにその通りだね。
だけど「名無し定義を許さない理由の一つは名前付き引数を想定していたから」は考えすぎじゃないのかな
名前付きで呼び出せないよって言いたいわけか
確かにその通りだね。
だけど「名無し定義を許さない理由の一つは名前付き引数を想定していたから」は考えすぎじゃないのかな
264デフォルトの名無しさん (テテンテンテン MM8f-wKT+)
2020/09/04(金) 19:51:37.09ID:Cdgw0eXGM いや名前付き引数はVB.NETには昔からあったぞ
想定していないわけがない
想定していないわけがない
265デフォルトの名無しさん (ワッチョイ 7f63-K5xR)
2020/09/04(金) 20:31:43.96ID:nqNO8CQ40 そもそもコンパイルしても変数名はILに残るわけだし
C#1からたぶんそうだよね?reflectionあるんだし
C#1からたぶんそうだよね?reflectionあるんだし
266デフォルトの名無しさん (アウアウウー Sa8b-wKT+)
2020/09/05(土) 10:58:29.89ID:JiWof8twa >>265
それはもちろんその通りで、名前付き引数も当然そのメタ情報を見るわけだけど、
MSが仮に明確な意思をもってインターフェイスメンバに引数名は絶対要らないという設計判断をしたならCLIもインターフェイスメンバには例外的に引数名を持てない仕様にしただろう
CLIの設計としてはわざわざそんな例外を設けるのは不自然だし、C#の言語仕様を考えてもインターフェイスメンバだけ例外的にメソッド宣言の文法が違うのは不自然だ
もちろん、実装には追加コストを払って特別なケアが必要になるだろう
そこまでして引数名を省略したいだろうか?ということだね
それはもちろんその通りで、名前付き引数も当然そのメタ情報を見るわけだけど、
MSが仮に明確な意思をもってインターフェイスメンバに引数名は絶対要らないという設計判断をしたならCLIもインターフェイスメンバには例外的に引数名を持てない仕様にしただろう
CLIの設計としてはわざわざそんな例外を設けるのは不自然だし、C#の言語仕様を考えてもインターフェイスメンバだけ例外的にメソッド宣言の文法が違うのは不自然だ
もちろん、実装には追加コストを払って特別なケアが必要になるだろう
そこまでして引数名を省略したいだろうか?ということだね
267デフォルトの名無しさん (アウアウウー Sa8b-CqCa)
2020/09/05(土) 12:34:52.95ID:Waja5Z+Na 実行時に小さくないコストが発生するような方法なんて取るわけないと思うよw
メタ情報なんて見てるわけないじゃんwww
メタ情報なんて見てるわけないじゃんwww
268デフォルトの名無しさん (ササクッテロラ Spbb-tEhD)
2020/09/05(土) 13:22:53.11ID:azagYl6mp 家政婦はメタ
269デフォルトの名無しさん (テテンテンテン MM8f-wKT+)
2020/09/05(土) 13:51:42.86ID:6OTXYwA0M270デフォルトの名無しさん (ブーイモ MM0b-Ndt7)
2020/09/05(土) 14:12:24.58ID:RVsSclOOM 2日連続して秒で論破されとるやつw
271デフォルトの名無しさん (スッップ Sd7f-SVp2)
2020/09/05(土) 16:47:07.35ID:aivXeFh8d >>270
スレタイの通り初心者なんやろ
スレタイの通り初心者なんやろ
272デフォルトの名無しさん (アウアウウー Sa8b-CqCa)
2020/09/05(土) 18:29:01.06ID:Waja5Z+Na273デフォルトの名無しさん (ワッチョイ 5f6a-XrX+)
2020/09/05(土) 22:38:11.37ID:VnlHSptc0 インターフェースの引数名を省略する戦略なんかないって結論出てるのにね
274デフォルトの名無しさん (ワッチョイ c74f-n8ne)
2020/09/06(日) 08:18:43.19ID:gGwX7R3F0275デフォルトの名無しさん (アウウィフ FF8b-th+2)
2020/09/06(日) 14:33:55.32ID:pKWvrGW4F 省略するとき
hoge(hage,,,,,fuga,,,,kuzu,,,) みたいな言語あったなー
hoge(hage,,,,,fuga,,,,kuzu,,,) みたいな言語あったなー
276デフォルトの名無しさん (ワッチョイ 0701-3NJ+)
2020/09/07(月) 02:57:30.38ID:u0REhpNo0 using var task = Task.Run(() => Do(a, b, c));
このDoを途中で止めることできる?
Doの処理に時間がかかるためキャンセルさせたい場合がある
このDoを途中で止めることできる?
Doの処理に時間がかかるためキャンセルさせたい場合がある
277デフォルトの名無しさん (ワッチョイ 5f01-YnK0)
2020/09/07(月) 03:10:56.80ID:3uGG3SyO0278デフォルトの名無しさん (ワッチョイ 7f2c-FZ/+)
2020/09/07(月) 03:25:16.17ID:jjIciKyq0 Doがキャンセルできるように作られてればできる
そうでなければ無理
そうでなければ無理
279デフォルトの名無しさん (ワッチョイ 5f10-Q6Op)
2020/09/07(月) 09:29:51.53ID:s6/MEWpq0 a,b,cってなによ?
280デフォルトの名無しさん (ブーイモ MMcf-VdhG)
2020/09/07(月) 10:42:48.10ID:Mci5uexUM 引数じゃないの?
281デフォルトの名無しさん (ワッチョイ 0701-3NJ+)
2020/09/07(月) 16:30:38.13ID:u0REhpNo0 Doの改造も不可避みたいですね
ありがとうございました
ありがとうございました
282デフォルトの名無しさん (アウアウウー Sa21-3UIE)
2020/09/11(金) 09:13:51.86ID:rDZLwTxXa VisualC#2019パーフェクトマスター
買ってみた
800ページ近くある
勉強しなおし
Java有償化で、いろいろ特需だな
Javaよサラバ
Javaよサラバ
Why なぜに生きているのか
わからない
買ってみた
800ページ近くある
勉強しなおし
Java有償化で、いろいろ特需だな
Javaよサラバ
Javaよサラバ
Why なぜに生きているのか
わからない
283デフォルトの名無しさん (ブーイモ MM81-az8F)
2020/09/11(金) 10:05:52.91ID:qxFjIo0zM Java有償本当か?
284デフォルトの名無しさん (アウアウウー Sa21-3UIE)
2020/09/11(金) 16:12:44.77ID:rDZLwTxXa 優勝だ
285デフォルトの名無しさん (エムゾネ FF32-0ian)
2020/09/23(水) 09:34:34.80ID:hJkRvCZvF >>1
Part 149
Part 149
286デフォルトの名無しさん (アウアウウー Sa43-k+EL)
2020/09/23(水) 19:49:30.91ID:SeN5l4G8a 需要ないと思うけど暇だったので別スレで質問が出てたキー操作のシーケンスで発動する
キーボドショートカットを作ってみた
https://ideone.com/FcOn5C
使い方:
public partial class Form1 : Form
{
private KeyboardShortcutsDetector mKbsDetector = new KeyboardShortcutsDetector();
public Form1()
{
InitializeComponent();
mKbsDetector.AddKeyBinding(Keys.Control | Keys.K, Keys.Control | Keys.L, () => Console.WriteLine("Ctrl + K, L"));
mKbsDetector.AddKeyBinding(Keys.Control | Keys.K, Keys.Control | Keys.M, () => Console.WriteLine("Ctrl + K, M"));
mKbsDetector.AddKeyBinding(Keys.Control | Keys.J, Keys.Control | Keys.U, () => Console.WriteLine("Ctrl + J, U"));
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
return mKbsDetector.ProcessKey(keyData) ? true : base.ProcessCmdKey(ref msg, keyData);
}
}
退屈なコードだからたぶん見るだけ時間の無駄だと思うw
キーボドショートカットを作ってみた
https://ideone.com/FcOn5C
使い方:
public partial class Form1 : Form
{
private KeyboardShortcutsDetector mKbsDetector = new KeyboardShortcutsDetector();
public Form1()
{
InitializeComponent();
mKbsDetector.AddKeyBinding(Keys.Control | Keys.K, Keys.Control | Keys.L, () => Console.WriteLine("Ctrl + K, L"));
mKbsDetector.AddKeyBinding(Keys.Control | Keys.K, Keys.Control | Keys.M, () => Console.WriteLine("Ctrl + K, M"));
mKbsDetector.AddKeyBinding(Keys.Control | Keys.J, Keys.Control | Keys.U, () => Console.WriteLine("Ctrl + J, U"));
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
return mKbsDetector.ProcessKey(keyData) ? true : base.ProcessCmdKey(ref msg, keyData);
}
}
退屈なコードだからたぶん見るだけ時間の無駄だと思うw
287デフォルトの名無しさん (ワッチョイ 46df-yU8X)
2020/09/24(木) 00:24:56.04ID:GbsAQP4b0 MVCとかまだイマイチわからんからwinformで作ってからMVCに移行する感じで勉強してるけど一人開発だと有り難み感じないからちょっと空しい
288デフォルトの名無しさん (ラクッペペ MMde-T5KC)
2020/09/24(木) 12:42:20.92ID:gbWGo5W3M ボタン押したあとに結果リストにフォーカス移動させるのは
viewでやってええのか?
viewでやってええのか?
289デフォルトの名無しさん (ワッチョイ c67c-P9wA)
2020/09/24(木) 16:36:22.54ID:e+Ck+96a0 いいと思うよ
290デフォルトの名無しさん (ワッチョイ 1201-nSIs)
2020/09/26(土) 17:13:06.01ID:xSRIB2Tf0 windowsフォームアプリでHttpClientを使ってhtmlを取得しようと思っていますがうまくいきません。ステップ実行すると※の部分で処理が終わってしまいます。エラーに関する表示が何もでないため行き詰まってます。非同期処理に関する理解が浅いからだと思っていますが、壁を乗り越えられません。
このようなコードではなぜうまくいかないのでしょうか?
@
private void button1_Click(object sender, EventArgs e)
{
var url = "http://www.google.com";
var t = GetHtml(url);
t.Wait();
this.textBox1.Text = t.Result;
}
async Task<string> GetHtml(string url)
{
var client = new HttpClient();
var html = await client.GetStringAsync(url);//←※
return html;
}
(続く)
このようなコードではなぜうまくいかないのでしょうか?
@
private void button1_Click(object sender, EventArgs e)
{
var url = "http://www.google.com";
var t = GetHtml(url);
t.Wait();
this.textBox1.Text = t.Result;
}
async Task<string> GetHtml(string url)
{
var client = new HttpClient();
var html = await client.GetStringAsync(url);//←※
return html;
}
(続く)
291デフォルトの名無しさん (ワッチョイ 1201-nSIs)
2020/09/26(土) 17:13:28.26ID:xSRIB2Tf0 >>290の続き
ためしにコンソールアプリで似たコードを書いてみましたがうまくいきます。
A
static void Main(string[] args)
{
var url = "http://www.google.com";
var t = GetHtml(url);
t.Wait();
Console.WriteLine(t.Result);
}
static async Task<string> GetHtml(string url)
{
var client = new HttpClient();
var html = await client.GetStringAsync(url);
return html;
}
フォームアプリでもハンドラに全て突っ込めばうまくいきます。
B
private async void button1_Click(object sender, EventArgs e)
{
var url = "http://www.google.com";
var client = new HttpClient();
var html = await client.GetStringAsync(url);
this.textBox1.Text = html;
}
ためしにコンソールアプリで似たコードを書いてみましたがうまくいきます。
A
static void Main(string[] args)
{
var url = "http://www.google.com";
var t = GetHtml(url);
t.Wait();
Console.WriteLine(t.Result);
}
static async Task<string> GetHtml(string url)
{
var client = new HttpClient();
var html = await client.GetStringAsync(url);
return html;
}
フォームアプリでもハンドラに全て突っ込めばうまくいきます。
B
private async void button1_Click(object sender, EventArgs e)
{
var url = "http://www.google.com";
var client = new HttpClient();
var html = await client.GetStringAsync(url);
this.textBox1.Text = html;
}
292デフォルトの名無しさん (ワッチョイ d62d-LNaZ)
2020/09/26(土) 17:23:29.59ID:RSACZQL60 >>290
private async void button1_Click( object sender, EventArgs e )
{
var url = "http://www.google.com";
this.textBox1.Text = await GetHtml( url );
}
private async void button1_Click( object sender, EventArgs e )
{
var url = "http://www.google.com";
this.textBox1.Text = await GetHtml( url );
}
293デフォルトの名無しさん (ワッチョイ 922f-ozis)
2020/09/26(土) 17:27:53.86ID:9d7CJAWD0 asyncはwaitしちゃだめ
理由は async デッドロック あたりでググって
理由は async デッドロック あたりでググって
294デフォルトの名無しさん (ブーイモ MM0e-1HiV)
2020/09/26(土) 17:31:36.79ID:+0bWtyAMM >>290
どうしてもWait()使う場合はConfigureAwait(false)するかな
どうしてもWait()使う場合はConfigureAwait(false)するかな
295デフォルトの名無しさん (ワッチョイ 1201-nSIs)
2020/09/26(土) 17:36:48.45ID:xSRIB2Tf0296デフォルトの名無しさん (ワッチョイ 4b2c-ozis)
2020/09/27(日) 04:46:18.27ID:6sIZ9RBB0 Android, Electron などは、スレッドが2つある。
UI(描画)スレッドと、サーバー(バックグラウンド)スレッド
だから、2つのコンテキスト・文脈をまたがって、非同期などはできない。
異なる文脈の処理を呼び出すには、文脈を切り替えるような、特別な書き方がある
まあ、Windows のGUIアプリが、2つの文脈でやっているかどうかは知らないけど
UI(描画)スレッドと、サーバー(バックグラウンド)スレッド
だから、2つのコンテキスト・文脈をまたがって、非同期などはできない。
異なる文脈の処理を呼び出すには、文脈を切り替えるような、特別な書き方がある
まあ、Windows のGUIアプリが、2つの文脈でやっているかどうかは知らないけど
297デフォルトの名無しさん (ワッチョイ 9fad-D1lY)
2020/09/27(日) 07:46:38.96ID:WpoxB1nK0298デフォルトの名無しさん (ワッチョイ d684-b+lb)
2020/09/27(日) 16:39:54.69ID:BMd/NSoW0 >>290
多分非同期処理って調べるとasyncの例ばかりで自分で戻り制御する方法がよく
分からなくてTaskクラスでWaitすれば出来るとかって結論に達したんでないかと
思うのだけど・・・
まず、async指定されたメソッドは呼び出されるとメソッド全体を別スレッドとして
起動して処理を元のスレッド(この場合STAスレッド)に戻します
asyncメソッドの中でawaitを指定すると、メソッドの内容に関係なく元のスレッドに
戻るのは変わらないですが、asyncメソッドの中でawaitで指定されたメソッドが
終了するまでasyncメソッドのスレッドだけが待ち状態になり、awaitから返って
くるとawait以降を実行しasyncメソッドの最後まで行くとasyncメソッドのスレッド
だけが終了されます
検証してないので予想なのですが、Taskクラスで管理するスレッドを起動して
いない(Task.Run)状態でWaitをかけるとSTAスレッドを待つためにsleepして
しまいますがSTAスレッドはループスレッドなので当然いつまで待っても終了
しません
asyncスレッドではawaitの処理が終わって復帰しようとしても元になるSTA
スレッドがsleep状態なので、こちらもawaitから返ってこないみたいなことが
起こっているのだと思います
2のコンソールアプリの場合にはループスレッドではないのでMainの処理が
終了した時点で続きが動くのではないかと
3は正しい使い方で、STAスレッドは動かしたままbutton1_Clickメソッドが別スレッドで
動作する際にclient.GetStringAsyncの処理を待っているので普通に動作します
button1_Clickの中で待つのであればasyncメソッドを作る意味がないですし、async
メソッドで裏で動かすのであればbutton1_Clickで待ってはいけないので3の様な
形で実装するか、asyncメソッドの返却値をただのstringにして、textBox1.Textに
メソッドの返却値が入る形式に変える(こっちは試してないので嘘かも)のが正解じゃ
ないかな
多分非同期処理って調べるとasyncの例ばかりで自分で戻り制御する方法がよく
分からなくてTaskクラスでWaitすれば出来るとかって結論に達したんでないかと
思うのだけど・・・
まず、async指定されたメソッドは呼び出されるとメソッド全体を別スレッドとして
起動して処理を元のスレッド(この場合STAスレッド)に戻します
asyncメソッドの中でawaitを指定すると、メソッドの内容に関係なく元のスレッドに
戻るのは変わらないですが、asyncメソッドの中でawaitで指定されたメソッドが
終了するまでasyncメソッドのスレッドだけが待ち状態になり、awaitから返って
くるとawait以降を実行しasyncメソッドの最後まで行くとasyncメソッドのスレッド
だけが終了されます
検証してないので予想なのですが、Taskクラスで管理するスレッドを起動して
いない(Task.Run)状態でWaitをかけるとSTAスレッドを待つためにsleepして
しまいますがSTAスレッドはループスレッドなので当然いつまで待っても終了
しません
asyncスレッドではawaitの処理が終わって復帰しようとしても元になるSTA
スレッドがsleep状態なので、こちらもawaitから返ってこないみたいなことが
起こっているのだと思います
2のコンソールアプリの場合にはループスレッドではないのでMainの処理が
終了した時点で続きが動くのではないかと
3は正しい使い方で、STAスレッドは動かしたままbutton1_Clickメソッドが別スレッドで
動作する際にclient.GetStringAsyncの処理を待っているので普通に動作します
button1_Clickの中で待つのであればasyncメソッドを作る意味がないですし、async
メソッドで裏で動かすのであればbutton1_Clickで待ってはいけないので3の様な
形で実装するか、asyncメソッドの返却値をただのstringにして、textBox1.Textに
メソッドの返却値が入る形式に変える(こっちは試してないので嘘かも)のが正解じゃ
ないかな
299デフォルトの名無しさん (ワッチョイ e39e-b+lb)
2020/09/27(日) 18:04:42.91ID:co99WLAO0 つまり非同期すればハゲるということですね。
300デフォルトの名無しさん (スププ Sd32-mh94)
2020/09/27(日) 19:27:47.55ID:0F2CG6otd301デフォルトの名無しさん (スププ Sd32-mh94)
2020/09/27(日) 19:28:51.84ID:0F2CG6otd302296 (ワッチョイ 4b2c-ozis)
2020/09/28(月) 02:24:40.60ID:QIpyCS2B0 JavaScript が難しいのは、非同期が基本だから。
コンテキスト・文脈が異なる。
時間の進み方が異なる世界で、同期を取らないといけないから
Ruby が簡単なのは、同期が基本だから。
非同期の方がオプション
Android, Electron がややこしいのも、2つの文脈の同期を取る必要があるから。
1つのアプリ内に、GUI・非GUI の文脈がある
例えば、Electronなら、Main は、Node.js のCUI スレッドで、
Renderer は、GUI のChromium スレッド
双方は、決められた書き方をしないと、同期・通信できない
コンテキスト・文脈が異なる。
時間の進み方が異なる世界で、同期を取らないといけないから
Ruby が簡単なのは、同期が基本だから。
非同期の方がオプション
Android, Electron がややこしいのも、2つの文脈の同期を取る必要があるから。
1つのアプリ内に、GUI・非GUI の文脈がある
例えば、Electronなら、Main は、Node.js のCUI スレッドで、
Renderer は、GUI のChromium スレッド
双方は、決められた書き方をしないと、同期・通信できない
303デフォルトの名無しさん (ワッチョイ 1201-nSIs)
2020/09/28(月) 06:18:20.07ID:ii9XSMYC0 >>290です
>>296
コンテキスト・文脈という概念がまだ把握できてないのでそこが課題だと思ってます
>>298
自分は独習C#という本をテキストにして勉強しています。
その中で、>>291のAと似たコードが記載されていて、
これを使ってasync/awaitの基礎が説明されています。
そこで、フォームアプリで真似してみたんです。
デッドロックについてはいろいろ調べてみて基本的な理屈は理解できました。
ただ、Aのコンソールアプリでデッドロックが起きない理由がわかりません。
コンソールアプリはループスレッドではないからとのご指摘が重要だと思っていますが
まだ理解が浅くてモヤモヤしてます。
あと、
>まず、async指定されたメソッドは呼び出されるとメソッド全体を別スレッドとして
起動して・・・
の下りですが、スレッドが3つあると考えればいいのでしょうか?
a.STAスレッド(2のスレッドを呼び出したスレッド)
b.async指定されたメソッドを処理するスレッド
c.client.GetStringAsync(url)を処理するスレッド
これはAのコンソールアプリでも同じですか?
bについては独習C#には書かれていなかったので
aとbは同じスレッドだと思い込んでいました。
調べてみてよく分かったのですが、理解できていない概念が多すぎますね。
今の時点で安易に触ってしまうと変に誤った先入観を持ってしまいそうです
この辺をわかりやすくしっかり説明している書籍等、ご存じないでしょうか?
結論としては
基本的にフォームアプリの中でWaitを使うな
使いたいならConfigureAwait(false)で回避しろ
ということなのかなと思っています
>>296
コンテキスト・文脈という概念がまだ把握できてないのでそこが課題だと思ってます
>>298
自分は独習C#という本をテキストにして勉強しています。
その中で、>>291のAと似たコードが記載されていて、
これを使ってasync/awaitの基礎が説明されています。
そこで、フォームアプリで真似してみたんです。
デッドロックについてはいろいろ調べてみて基本的な理屈は理解できました。
ただ、Aのコンソールアプリでデッドロックが起きない理由がわかりません。
コンソールアプリはループスレッドではないからとのご指摘が重要だと思っていますが
まだ理解が浅くてモヤモヤしてます。
あと、
>まず、async指定されたメソッドは呼び出されるとメソッド全体を別スレッドとして
起動して・・・
の下りですが、スレッドが3つあると考えればいいのでしょうか?
a.STAスレッド(2のスレッドを呼び出したスレッド)
b.async指定されたメソッドを処理するスレッド
c.client.GetStringAsync(url)を処理するスレッド
これはAのコンソールアプリでも同じですか?
bについては独習C#には書かれていなかったので
aとbは同じスレッドだと思い込んでいました。
調べてみてよく分かったのですが、理解できていない概念が多すぎますね。
今の時点で安易に触ってしまうと変に誤った先入観を持ってしまいそうです
この辺をわかりやすくしっかり説明している書籍等、ご存じないでしょうか?
結論としては
基本的にフォームアプリの中でWaitを使うな
使いたいならConfigureAwait(false)で回避しろ
ということなのかなと思っています
304デフォルトの名無しさん (ワッチョイ 1201-nSIs)
2020/09/28(月) 07:01:50.95ID:ii9XSMYC0305デフォルトの名無しさん (ワッチョイ 12ad-LNaZ)
2020/09/28(月) 07:59:26.50ID:nO4ceNb30 すいません入門書に以下のコードがあるんですが実行してもピクチャーが真っ白で変になってるんですが
何が間違ってるんでしょうか;
https://gyazo.com/de388825132a1ac42b21b7cbb8a069fd
画像を置いてる場所はここです
https://gyazo.com/93530ea51ef1e88cbcd097846d409ca4
何が間違ってるんでしょうか;
https://gyazo.com/de388825132a1ac42b21b7cbb8a069fd
画像を置いてる場所はここです
https://gyazo.com/93530ea51ef1e88cbcd097846d409ca4
306デフォルトの名無しさん (ワッチョイ 16f2-9JDv)
2020/09/28(月) 08:35:58.50ID:lkQsRi/q0 表示したい画像はどんな内容なんですか?
307296 (ワッチョイ 4b2c-ozis)
2020/09/28(月) 08:52:18.25ID:QIpyCS2B0 >>303
コンテキスト・文脈が異なるとは、全く別世界・異次元。
時間の進み方も異なるし、全く感知できない。
通信・同期もできない
未定義の動作と同じ。
あらゆる仮定・推測ができない
だから、双方が連絡するには、特別な書き方をしないといけない
普通の言語では、例外も補足できない。
他方で例外を投げても、伝わらない
だから、ストールするのは、文脈が異なる場所で、例外が起こっている可能性もある。
起こっていても分からないから
本を買うよりも、検索して調べた方がよい。
こういう説明が載ってる本は、まずない。
余程、マニアックな本だけだろう
コンテキスト・文脈が異なるとは、全く別世界・異次元。
時間の進み方も異なるし、全く感知できない。
通信・同期もできない
未定義の動作と同じ。
あらゆる仮定・推測ができない
だから、双方が連絡するには、特別な書き方をしないといけない
普通の言語では、例外も補足できない。
他方で例外を投げても、伝わらない
だから、ストールするのは、文脈が異なる場所で、例外が起こっている可能性もある。
起こっていても分からないから
本を買うよりも、検索して調べた方がよい。
こういう説明が載ってる本は、まずない。
余程、マニアックな本だけだろう
308デフォルトの名無しさん (ワッチョイ f7b2-b+lb)
2020/09/28(月) 08:53:38.64ID:phqY8Xtx0 FormのControlsに追加しなくてもいいんだっけ?
309デフォルトの名無しさん (ワッチョイ 2f33-EUyz)
2020/09/28(月) 08:59:13.21ID:Zg0P7tB00 >>303
C#による マルチコアのための非同期/並列処理プログラミング
ttps://gihyo.jp/book/2013/978-4-7741-5828-0
C#によるWindowsシステムプログラミング 第2版
ttp://www.cutt.co.jp/book/978-4-87783-468-5.html
この2冊しかしらん
もっといいのを知ってる人いたらよろしく
C#による マルチコアのための非同期/並列処理プログラミング
ttps://gihyo.jp/book/2013/978-4-7741-5828-0
C#によるWindowsシステムプログラミング 第2版
ttp://www.cutt.co.jp/book/978-4-87783-468-5.html
この2冊しかしらん
もっといいのを知ってる人いたらよろしく
310296 (ワッチョイ 4b2c-ozis)
2020/09/28(月) 09:04:53.56ID:QIpyCS2B0 確かに、GUI の根幹には、永久のイベント(メッセージ)ループがある。
イベントドリブン
ずっと、ユーザーからのマウスイベントなどが、キューに入るのを待っている。
キューにイベントが入ると、それを処理する。
それを永久に続ける
一方、CUI では、そういうイベントドリブンは聞かない。
マウス操作で、何かをするというのも聞かない。
Ctrl + C を押して、割り込み処理を発生させることはできるが
でも、こういうアプリの終了などのソフトウェア割り込みも、イベントループで拾うけど
イベントドリブン
ずっと、ユーザーからのマウスイベントなどが、キューに入るのを待っている。
キューにイベントが入ると、それを処理する。
それを永久に続ける
一方、CUI では、そういうイベントドリブンは聞かない。
マウス操作で、何かをするというのも聞かない。
Ctrl + C を押して、割り込み処理を発生させることはできるが
でも、こういうアプリの終了などのソフトウェア割り込みも、イベントループで拾うけど
311296 (ワッチョイ 4b2c-ozis)
2020/09/28(月) 09:08:06.54ID:QIpyCS2B0 そんな難しい本を読んでも、理解できないから無駄だと思う
検索した方がよい
検索した方がよい
312デフォルトの名無しさん (ワッチョイ 2f33-EUyz)
2020/09/28(月) 09:11:10.60ID:Zg0P7tB00 >>305
用意した画像の一部だけが表示されている
たとえば、
pb.SizeMode = PictureBoxSizeMode.StretchImage;
といった感じでPictureBoxSizeModeを指定してみると何が起こってるのか何となくわかるんじゃね?
用意した画像の一部だけが表示されている
たとえば、
pb.SizeMode = PictureBoxSizeMode.StretchImage;
といった感じでPictureBoxSizeModeを指定してみると何が起こってるのか何となくわかるんじゃね?
313デフォルトの名無しさん (アウアウウー Sa43-Vzxq)
2020/09/28(月) 09:42:36.85ID:Uql71HHWa >>310
ctl+Cまで入力コマンドを待つCUIアプリはイベントドリブンと呼べるのでは?
ctl+Cまで入力コマンドを待つCUIアプリはイベントドリブンと呼べるのでは?
314デフォルトの名無しさん (ワッチョイ 9fad-D1lY)
2020/09/28(月) 09:50:37.80ID:o994bwz+0 >>310
CUIでもターミナルベースの業務アプリなんかだとイベントループ書くぞ。
CUIでもターミナルベースの業務アプリなんかだとイベントループ書くぞ。
315296 (ワッチョイ 4b2c-ozis)
2020/09/28(月) 10:20:17.53ID:QIpyCS2B0 結局、GUI・CUI も、どちらもイベントドリブンなのか
大部分は同じなのかも
大部分は同じなのかも
316デフォルトの名無しさん (ワッチョイ 9fad-D1lY)
2020/09/28(月) 10:59:03.73ID:o994bwz+0317デフォルトの名無しさん (ワッチョイ b302-S0Wo)
2020/09/28(月) 11:27:34.04ID:j++FlVxl0 Delphiに存在したメタクラス型(クラス型を代入、参照できる変数)は
C#に無いの?
C#に無いの?
318デフォルトの名無しさん (ワッチョイ 1201-nSIs)
2020/09/28(月) 11:42:34.18ID:ii9XSMYC0319デフォルトの名無しさん (ワッチョイ f7b2-b+lb)
2020/09/28(月) 11:53:52.45ID:phqY8Xtx0 >>317
Typeは?
Typeは?
320デフォルトの名無しさん (ワッチョイ b302-S0Wo)
2020/09/28(月) 13:53:50.99ID:j++FlVxl0 Typeでもある程度事は足りるけど、
あらゆる型のtypeof()を代入できるので不確実だし、Activatorとか必要で面倒。
無いなら仕方ないが…まあ移植が大変
あらゆる型のtypeof()を代入できるので不確実だし、Activatorとか必要で面倒。
無いなら仕方ないが…まあ移植が大変
321デフォルトの名無しさん (ワッチョイ 12ad-LNaZ)
2020/09/28(月) 18:57:37.61ID:nO4ceNb30322デフォルトの名無しさん (ワッチョイ 4bda-tH1f)
2020/09/28(月) 22:54:29.00ID:iemn9XLz0 >>310
CUIなRTOSなんて普通にあるけどなぁ
CUIなRTOSなんて普通にあるけどなぁ
323デフォルトの名無しさん (ワッチョイ ca4a-E04M)
2020/10/10(土) 10:58:06.91ID:RvE6O+PE0 .NET Coreでコンソール画面に
「こんにちは、WORLD!」と表示させようとすると
なぜか「こんにちは、WORL!」のように表示されます
コンソール画面のメニューからフォントを変更すると正しく表示されますが原因が分かりません
「こんにちは、WORLD!」と表示させようとすると
なぜか「こんにちは、WORL!」のように表示されます
コンソール画面のメニューからフォントを変更すると正しく表示されますが原因が分かりません
324デフォルトの名無しさん (ワッチョイ 4aad-Hns0)
2020/10/10(土) 11:22:49.95ID:OZkIKLkD0 コンソール画面とは?
325デフォルトの名無しさん (ワッチョイ af78-xYNh)
2020/10/10(土) 12:42:00.94ID:YPdRC9Oi0 >>323
コード貼れ
コード貼れ
326デフォルトの名無しさん (ワッチョイ ca4a-E04M)
2020/10/10(土) 13:17:16.07ID:RvE6O+PE0 static void Main(string[] args)
{
var str = "こんにちは、WORLD!";
Console.WriteLine("{0}", str);
Console.ReadKey();
}
{
var str = "こんにちは、WORLD!";
Console.WriteLine("{0}", str);
Console.ReadKey();
}
327デフォルトの名無しさん (ワッチョイ b301-xYNh)
2020/10/10(土) 17:53:06.91ID:wYCx593I0328デフォルトの名無しさん (ワッチョイ b301-xYNh)
2020/10/10(土) 17:57:00.27ID:wYCx593I0329323 326 (ワッチョイ ca4a-E04M)
2020/10/10(土) 19:40:42.12ID:RvE6O+PE0330デフォルトの名無しさん (ワッチョイ b301-xYNh)
2020/10/10(土) 20:03:24.77ID:wYCx593I0 >>329
こちらでは正常なんでコンソール画面のプロパティの設定がおかしいんでは?
こちらでは正常なんでコンソール画面のプロパティの設定がおかしいんでは?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 【J SPORTS】FIFA U-17ワールドカップ ★9
- 【J SPORTS】FIFA U-17ワールドカップ ★10
- とらせん IPあり
- 巨専】
- こいせん 全レス転載禁止
- 侍ジャパンシリーズ2025「日本vs韓国」その12
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- かしこいワンコっていうVtuberの子知ってる?
- カレーライスぐちゃぐちゃに混ぜる奴🤣
- もう寝る
- 女だけど眠れない
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
