!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:Pggemlyq0250デフォルトの名無しさん (ワッチョイ 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
こちらでは正常なんでコンソール画面のプロパティの設定がおかしいんでは?
こちらでは正常なんでコンソール画面のプロパティの設定がおかしいんでは?
331蟻人間 ◆T6xkBnTXz7B0 (スププ Sdea-2Jw8)
2020/10/10(土) 20:04:01.51ID:c6WyhNHPd 何てフォント?
332デフォルトの名無しさん (ワッチョイ ca4a-E04M)
2020/10/10(土) 20:23:39.28ID:RvE6O+PE0 MSゴシックの18ポイント、Windows8.1です
来週会社のパソコンで試してみることにします
来週会社のパソコンで試してみることにします
333デフォルトの名無しさん (ワッチョイ b301-xYNh)
2020/10/10(土) 20:41:27.03ID:wYCx593I0 >>332
8.1はプロパティでレガシーコンソールのチェックある?あったらそれチェックでいけるんでは?
8.1はプロパティでレガシーコンソールのチェックある?あったらそれチェックでいけるんでは?
334デフォルトの名無しさん (ワッチョイ ca4a-E04M)
2020/10/10(土) 20:52:24.98ID:RvE6O+PE0 ないです
335デフォルトの名無しさん (アウアウウー Sa2f-DH51)
2020/10/10(土) 21:17:43.96ID:RlZbVDXEa 何にもアドバイスできないのに恐縮だけど、
>コンソール画面のメニューからフォントを変更すると正しく表示されますが
だったら具体的にどのフォントで問題が発生してどのフォントで発生しないか
確認した範囲で書いた方がいいのでは
あと、普通テキスト変えていろいろ試さないか?
>コンソール画面のメニューからフォントを変更すると正しく表示されますが
だったら具体的にどのフォントで問題が発生してどのフォントで発生しないか
確認した範囲で書いた方がいいのでは
あと、普通テキスト変えていろいろ試さないか?
336デフォルトの名無しさん (ワッチョイ b301-xYNh)
2020/10/10(土) 21:50:46.82ID:wYCx593I0 他のアプリでMSゴシックの18ポイント使ってみ。フォントのファイルが正常かどうか
使えるなら8.1のコンソールウィンドウの問題でしょ
使えるなら8.1のコンソールウィンドウの問題でしょ
337デフォルトの名無しさん (ワッチョイ 1b02-tHo0)
2020/10/10(土) 23:23:35.42ID:wgBcrtZd0338デフォルトの名無しさん (ワッチョイ 5b49-fMdf)
2020/10/20(火) 10:49:57.27ID:N2Y7+9Dy0 ローカルでiTextSharpを利用して、
Json形式のデータからPDF帳票を作る・・てのつくったんだが、
(サーバ上で、APIコールとかファイル読込でPDFファイルを返したかった。
イメージ的にはページごとにTextとかLineを指定したJsonデータ)
いざ業務に転用できるかなってフェーズにきて
iTextSharpのライセンス(AGPL)がやだなあ、って思ってる。
PDFSharpは日本語がなんかうまくいかない。
今のC#で、PDFを作るの、皆さんはどうやってる?
Json形式のデータからPDF帳票を作る・・てのつくったんだが、
(サーバ上で、APIコールとかファイル読込でPDFファイルを返したかった。
イメージ的にはページごとにTextとかLineを指定したJsonデータ)
いざ業務に転用できるかなってフェーズにきて
iTextSharpのライセンス(AGPL)がやだなあ、って思ってる。
PDFSharpは日本語がなんかうまくいかない。
今のC#で、PDFを作るの、皆さんはどうやってる?
339デフォルトの名無しさん (ワッチョイ 9fad-3SP/)
2020/10/20(火) 10:55:16.27ID:0/xBmjm30 >>338
業務だったらExcelCreator使ってる
業務だったらExcelCreator使ってる
340デフォルトの名無しさん (ワイーワ2 FF3f-Vszw)
2020/10/20(火) 10:59:00.80ID:pHiz9StDF PDFSharp使ってるけど問題無し
341デフォルトの名無しさん (アウアウエー Sa3f-EbeN)
2020/10/20(火) 11:10:22.94ID:d69BLAaZa React、Vueで帳票レンダリング
ヘッドレスブラウザでPDF印刷
ヘッドレスブラウザでPDF印刷
342デフォルトの名無しさん (ワイーワ2 FF3f-Vszw)
2020/10/20(火) 11:13:59.21ID:pHiz9StDF 日本語不安ならグラフィック直接PDFに張り付けろ
343デフォルトの名無しさん (ワッチョイ bbad-6ryY)
2020/10/20(火) 12:28:25.89ID:eHl8PxCr0 PDFSharpは日本語の折り返しに対応してなかったぞ。
344デフォルトの名無しさん (ワイーワ2 FF3f-Vszw)
2020/10/20(火) 12:50:06.87ID:pHiz9StDF >Json形式のデータからPDF帳票を作る
これが折り返しするかどうかだな
これが折り返しするかどうかだな
345デフォルトの名無しさん (ワッチョイ 5b49-fMdf)
2020/10/20(火) 13:46:22.13ID:N2Y7+9Dy0346デフォルトの名無しさん (アウアウエー Sa3f-EbeN)
2020/10/20(火) 13:50:07.09ID:d69BLAaZa347デフォルトの名無しさん (ワッチョイ 9fad-3SP/)
2020/10/20(火) 14:00:01.34ID:0/xBmjm30348デフォルトの名無しさん (ワッチョイ 5b49-fMdf)
2020/10/20(火) 15:28:40.52ID:N2Y7+9Dy0349デフォルトの名無しさん (ワッチョイ ef02-pZTf)
2020/10/20(火) 16:09:37.19ID:CqCKSidt0 C♯が現在最強言語らしいので勉強したいのですが
マイクロソフトはVB6の開発を打ち切ってプログラマを裏切った過去があるそうで
なかなか踏み切れずにいます。。。
C♯は20年後も開発が続いてると思いますか?
教えてエロい人
マイクロソフトはVB6の開発を打ち切ってプログラマを裏切った過去があるそうで
なかなか踏み切れずにいます。。。
C♯は20年後も開発が続いてると思いますか?
教えてエロい人
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【テレビ】小泉進次郎農相 備蓄米の店頭価格『2000円』と明言 26日に事業者向け説明会「とにかくスピード」 [冬月記者★]
- 【芸能】『ポスト永野芽郁だと思う女優』ランキング! 3位小芝風花、2位芳根京子を抑えた1位は? 「演技力が素晴らしい」 [冬月記者★]
- 【免許】「4時間でMT習得?それ無理だろ…」運転免許の取得方法変更に不安しかないワケ [ひぃぃ★]
- スーパー「アキダイ」の秋葉社長「精米できてパッケージングもできる小売店はほぼない」政府が放出する備蓄米に言及……ミヤネ屋 [少考さん★]
- 日産、横浜本社の売却検討 7工場削減などリストラ費用に ★2 [蚤の市★]
- 【芸能】中居正広氏の代理人が音声データを再要求「開示できるはず」 第三委の“ゼロ回答”受け ★2 [jinjin★]
- ▶破壊されない兎田ぺこらスレ
- 【悲報】森保監督、佐野海舟の性的暴行逮捕を「ミス」と連呼して大炎上… 日本人にとってはパスミス程度の話 [452836546]
- 【悲報】国土交通省、税金でマイクラ [279254606]
- 和花って名前読める?
- 【画像】Xの愛国者、「更迭」が書けず「更送」と書く 愛国者「誤字でキャッキャするな」→「誤字ではなく知らないんですよ」 5万いいね [808139444]
- 【馬鹿】女が発明した文明の利器がほとんど無い件wwwwwwwwwwwwww【無能な劣等種】