!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:Pggemlyq0294デフォルトの名無しさん (ブーイモ 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年後も開発が続いてると思いますか?
教えてエロい人
350デフォルトの名無しさん (スップ Sdbf-H+yj)
2020/10/20(火) 16:14:23.52ID:Nb9oJ8Mwd そんな先のことなんざわからん
確実に言えるのは今勉強している技術を20年後も変わらずに使い続ける前提でいるような技術者は居ない(と信じたい)
生き残ってるなら初期学習がない分少し楽かもしれないけど、新しいのが台頭してくりゃそちらを新たに学習するだけ
確実に言えるのは今勉強している技術を20年後も変わらずに使い続ける前提でいるような技術者は居ない(と信じたい)
生き残ってるなら初期学習がない分少し楽かもしれないけど、新しいのが台頭してくりゃそちらを新たに学習するだけ
351デフォルトの名無しさん (ワッチョイ ef02-pZTf)
2020/10/20(火) 16:25:01.94ID:CqCKSidt0 そうですか。先のことは誰にもわからないですよね。
逆に20年後も確実に主力な言語ってPythonくらいかな?
逆に20年後も確実に主力な言語ってPythonくらいかな?
352デフォルトの名無しさん (ワッチョイ 6b01-fMdf)
2020/10/20(火) 16:25:26.41ID:cR623l/E0 >>349
開発が続いてる言語の新しい技術についていくような人はどんな言語でもすぐ学べる
開発が続いてる言語の新しい技術についていくような人はどんな言語でもすぐ学べる
353デフォルトの名無しさん (ワッチョイ ef02-pZTf)
2020/10/20(火) 16:31:38.91ID:CqCKSidt0354デフォルトの名無しさん (ワッチョイ 9fad-3SP/)
2020/10/20(火) 16:45:13.07ID:0/xBmjm30 C#ほど後方互換性を重要視している言語ってなかなかないと思うけどね
355デフォルトの名無しさん (ワッチョイ ef02-pZTf)
2020/10/20(火) 16:48:10.12ID:CqCKSidt0356デフォルトの名無しさん (アウアウウー Sacf-0T0S)
2020/10/20(火) 17:16:01.37ID:nipGGPAZa357デフォルトの名無しさん (アウアウウー Sacf-Gzvz)
2020/10/20(火) 18:10:04.06ID:kSL2D2eBa OfficeのマクロはまだVBなんだっけ?
358デフォルトの名無しさん (スップ Sdbf-H+yj)
2020/10/20(火) 18:13:11.84ID:Nb9oJ8Mwd そだね
python使えるようにするみたいな話はあったけど進行してるのかな?
python使えるようにするみたいな話はあったけど進行してるのかな?
359デフォルトの名無しさん (ワッチョイ fb0c-lr1q)
2020/10/20(火) 18:15:13.55ID:ATqqkPAW0 >python使えるようにするみたいな話
頓挫したぞ
頓挫したぞ
360デフォルトの名無しさん (スプッッ Sdbf-1poc)
2020/10/20(火) 19:53:46.10ID:c2x7XoZLd 贅沢言わないから.NETにpython入れてVisualStudio(codeじゃない方)でサポートしてくれるだけでいいのに
361デフォルトの名無しさん (ワッチョイ ab5f-UsEC)
2020/10/20(火) 21:29:38.81ID:j1S9Ds0j0 それIronPythonと何が違うの?
362デフォルトの名無しさん (ワッチョイ 9f01-ArIQ)
2020/10/20(火) 21:48:49.93ID:iUu5GsdY0363デフォルトの名無しさん (ワッチョイ 9f42-lr1q)
2020/10/20(火) 22:16:42.30ID:jgnvePEX0 ChromeベースのWebView2がやっとラウンチしたようだね。まだ.netじゃ使えないが
Previewで確認したところマウスの戻るボタンが使えるのがいい所だな
Previewで確認したところマウスの戻るボタンが使えるのがいい所だな
364デフォルトの名無しさん (アウアウウー Sacf-Gzvz)
2020/10/20(火) 22:51:38.52ID:kSL2D2eBa >>362
へーそれは知らんかったありがと。
へーそれは知らんかったありがと。
365デフォルトの名無しさん (ワッチョイ ef02-pZTf)
2020/10/20(火) 23:36:15.59ID:CqCKSidt0366デフォルトの名無しさん (ワッチョイ 65e4-xMNm)
2020/10/21(水) 00:36:52.32ID:0KDGF23Y0 なんかうろ覚えなんだが
こういう非同期処理の書き方ってちゃんと動いたっけ?
if(!locked){
locked = true;
await xxx.Task;
locked = false;
}
async/awaitは同じスレッドに戻るからこんな単純なロックでも問題無いって昔判断したような記憶はある
こういう非同期処理の書き方ってちゃんと動いたっけ?
if(!locked){
locked = true;
await xxx.Task;
locked = false;
}
async/awaitは同じスレッドに戻るからこんな単純なロックでも問題無いって昔判断したような記憶はある
367デフォルトの名無しさん (ワッチョイ c6de-qdaq)
2020/10/21(水) 09:14:18.23ID:hl6LkBs90 ソースの一行単位でスキがうまれるので無理じゃね
ifとlocked=trueの間に実行されてる
ifとlocked=trueの間に実行されてる
368デフォルトの名無しさん (ワッチョイ c6de-qdaq)
2020/10/21(水) 09:16:03.92ID:hl6LkBs90 1行単位どころじゃなかった
意味不明なところでも割り込みあるわw
意味不明なところでも割り込みあるわw
369デフォルトの名無しさん (JP 0H22-pYMh)
2020/10/21(水) 09:43:40.30ID:eNSg6QZpH 四捨五入の結果がおかしいのって自分だけかな・・・
decimal v = -0.0195m;
decimal rounded = Math.Round(v, 2, MidpointRounding.ToPositiveInfinity);
Console.WriteLine(rounded);
ってすると、小数点2桁までになるよう(小数点3桁目を)四捨五入するので
-0.02になるはずなのに、結果が-0.01になっちゃうんですけど・・・
decimal v = -0.0195m;
decimal rounded = Math.Round(v, 2, MidpointRounding.ToPositiveInfinity);
Console.WriteLine(rounded);
ってすると、小数点2桁までになるよう(小数点3桁目を)四捨五入するので
-0.02になるはずなのに、結果が-0.01になっちゃうんですけど・・・
370デフォルトの名無しさん (ワッチョイ c201-45kF)
2020/10/21(水) 09:56:42.42ID:lxmGvu010371デフォルトの名無しさん (ワッチョイ 1d1a-8DiG)
2020/10/21(水) 12:02:28.19ID:sg7OOy0L0372デフォルトの名無しさん (ワッチョイ c6de-qdaq)
2020/10/21(水) 12:16:57.36ID:hl6LkBs90 >>371
いや
if(!locked){
実行
別タスクlockedのfalseを見て処理開始
locked = true;
別タスク割り込まれたら困る処理開始
await xxx.Task;←別タスクと衝突
locked = false;
}
起こるじゃん
いや
if(!locked){
実行
別タスクlockedのfalseを見て処理開始
locked = true;
別タスク割り込まれたら困る処理開始
await xxx.Task;←別タスクと衝突
locked = false;
}
起こるじゃん
373デフォルトの名無しさん (JP 0H22-pYMh)
2020/10/21(水) 13:03:41.62ID:eNSg6QZpH >>371
-0.01と-0.02の中間(MidPoint)である-0.015のときの丸め方(Rounding)として
「MidpointRounding.ToPositiveInfinity」を指定したつもりだったのですが・・・
MidPointじゃないときにも「ToPositiveInfinity」が適用されちゃうんですね・・・
JavaScriptのMath.Round()とおなじような(四捨五入される桁の数字が5の場合に
正の無限大の方向で丸める)四捨五入をしたかっただけなのですが、
関数を自作しないとだめみたいなので自作します。
お騒がせしました。
-0.01と-0.02の中間(MidPoint)である-0.015のときの丸め方(Rounding)として
「MidpointRounding.ToPositiveInfinity」を指定したつもりだったのですが・・・
MidPointじゃないときにも「ToPositiveInfinity」が適用されちゃうんですね・・・
JavaScriptのMath.Round()とおなじような(四捨五入される桁の数字が5の場合に
正の無限大の方向で丸める)四捨五入をしたかっただけなのですが、
関数を自作しないとだめみたいなので自作します。
お騒がせしました。
374デフォルトの名無しさん (ワッチョイ 8242-gGz3)
2020/10/21(水) 13:30:40.39ID:UaTtUbsy0 await絡みのときは、排他制御はSemaphoreSlim使うのが定番ですよ
https://www.atmarkit.co.jp/ait/articles/1411/11/news117.html
https://www.atmarkit.co.jp/ait/articles/1411/11/news117.html
375デフォルトの名無しさん (アウアウウー Sa45-PQnC)
2020/10/21(水) 13:44:12.17ID:RtxzEAIBa 四捨五入:わかる
銀行丸め:わかる
正の無限大の方向で丸める:何の意味があんのそれ?
銀行丸め:わかる
正の無限大の方向で丸める:何の意味があんのそれ?
376デフォルトの名無しさん (テテンテンテン MMe6-K3fn)
2020/10/21(水) 13:52:03.73ID:xBoANC0iM 切り上げって知ってる?
377デフォルトの名無しさん (ワッチョイ 1d1a-8DiG)
2020/10/21(水) 14:15:10.32ID:sg7OOy0L0 >>373
それならこんな感じで簡単に作れるから頑張れ
static decimal[] table = new decimal[]{1E0m, 1E1m, 1E2m, 1E3m, 1E4m};
static decimal Round(decimal num, int pow) => Decimal.Floor((num * table[pow]) + 0.5m) / table[pow];
decimal num = Round(-0.015m, 2); // -0.01
>>372
普通にメインスレッドから叩いていればこうなるからな
if(!locked){ // thread 1
locked = true; // thread 1
await xxx.Task; // thread 2
locked = false; // thread 1
}
それならこんな感じで簡単に作れるから頑張れ
static decimal[] table = new decimal[]{1E0m, 1E1m, 1E2m, 1E3m, 1E4m};
static decimal Round(decimal num, int pow) => Decimal.Floor((num * table[pow]) + 0.5m) / table[pow];
decimal num = Round(-0.015m, 2); // -0.01
>>372
普通にメインスレッドから叩いていればこうなるからな
if(!locked){ // thread 1
locked = true; // thread 1
await xxx.Task; // thread 2
locked = false; // thread 1
}
378デフォルトの名無しさん (スップ Sd02-UPmx)
2020/10/21(水) 14:19:07.15ID:lJjSrE40d 正負どっち方向に動くかわかんない変換より確実に方向がわかっている変換が必要なことはあるよ
379デフォルトの名無しさん (アウアウウー Sa45-PQnC)
2020/10/21(水) 14:26:27.71ID:RtxzEAIBa380デフォルトの名無しさん (スップ Sd02-UPmx)
2020/10/21(水) 14:32:15.81ID:lJjSrE40d 5捨6入って特定に分野では一般的な計算方法では?
俺は使わないけど
俺は使わないけど
381デフォルトの名無しさん (アウアウウー Sa45-PQnC)
2020/10/21(水) 14:33:15.98ID:RtxzEAIBa382デフォルトの名無しさん (ワッチョイ 8224-3PYq)
2020/10/21(水) 14:47:36.44ID:8k52si4D0 それでもう.NET5使ってええの?
383デフォルトの名無しさん (ワッチョイ 02ad-zk6z)
2020/10/21(水) 14:52:13.96ID:v0oiVQF00 いいよ
384デフォルトの名無しさん (ワッチョイ 022f-MACq)
2020/10/21(水) 15:00:31.64ID:5E7rZ8hS0 >>377
それが問題になるのは、そのifブロックが複数スレッドで実行されたときだからな
それが問題になるのは、そのifブロックが複数スレッドで実行されたときだからな
385デフォルトの名無しさん (ワッチョイ eea7-qdaq)
2020/10/21(水) 16:37:46.89ID:APVpE4AA0386デフォルトの名無しさん (ワッチョイ 1d1a-LA9s)
2020/10/21(水) 17:36:18.89ID:sg7OOy0L0 >>385
つまりこういうのを危惧してるのか?
Task.Run(() => {
if(!locked){
locked = true;
await xxx.Task;
locked = false;
}
});
だとしたらこんなのは仮定に持ち出すのがそもそも間違い
それ言い出したらフィールド操作するあらゆるメソッドで「並列で呼び出される可能性がある」とlock()で括らなきゃいけなくなってしまう
つまりこういうのを危惧してるのか?
Task.Run(() => {
if(!locked){
locked = true;
await xxx.Task;
locked = false;
}
});
だとしたらこんなのは仮定に持ち出すのがそもそも間違い
それ言い出したらフィールド操作するあらゆるメソッドで「並列で呼び出される可能性がある」とlock()で括らなきゃいけなくなってしまう
387デフォルトの名無しさん (ワッチョイ c201-45kF)
2020/10/21(水) 17:53:44.86ID:lxmGvu010 ifブロックがシングルスレッドでしか実行されない状況で
lockが必要な状況ってどういうの?
lockが必要な状況ってどういうの?
388デフォルトの名無しさん (ワッチョイ 022f-MACq)
2020/10/21(水) 17:55:56.87ID:5E7rZ8hS0 元の質問がマルチスレッドでのロックに関する質問だと思うのだがな
このコードはスレッドセーフですか?
いいえ危険です
みんなが回答してるのはそういう事
このスレの趣旨や質問者のレベルを考えると妥当な仮定と回答だと思うぞ
このコードはスレッドセーフですか?
いいえ危険です
みんなが回答してるのはそういう事
このスレの趣旨や質問者のレベルを考えると妥当な仮定と回答だと思うぞ
389デフォルトの名無しさん (ワッチョイ 022f-MACq)
2020/10/21(水) 17:58:26.66ID:5E7rZ8hS0 >>387
再入すればやばい気がしないでもない
再入すればやばい気がしないでもない
390デフォルトの名無しさん (ワッチョイ 1d1a-LA9s)
2020/10/21(水) 18:02:52.19ID:sg7OOy0L0 元の質問って>>366だろ?
> async/awaitは同じスレッドに戻るからこんな単純なロックでも問題無い
「同じスレッドに戻る」を認識してるなら疑いなくtrueやん
ここで「でも別スレッドで動かしたら危険」と言うのは質問の前提を崩してる
> async/awaitは同じスレッドに戻るからこんな単純なロックでも問題無い
「同じスレッドに戻る」を認識してるなら疑いなくtrueやん
ここで「でも別スレッドで動かしたら危険」と言うのは質問の前提を崩してる
391デフォルトの名無しさん (ワッチョイ bdad-TzND)
2020/10/21(水) 18:14:17.17ID:MqdNiLmu0 崩してないな。
392デフォルトの名無しさん (ワッチョイ 022f-MACq)
2020/10/21(水) 18:19:06.78ID:5E7rZ8hS0 そのawaitしてるのはasyncメソッドだから、メインスレッドからのみ呼ばれるとは限らん
つまりもどるのがメインスレッドだとは限らん
というの理解しているのならまあ大きなお世話だと言えなくもないが
あとフォームアプリじゃなければ、もとのスレッドに戻るも保障されないけどな
つまりもどるのがメインスレッドだとは限らん
というの理解しているのならまあ大きなお世話だと言えなくもないが
あとフォームアプリじゃなければ、もとのスレッドに戻るも保障されないけどな
393デフォルトの名無しさん (ワッチョイ c201-45kF)
2020/10/21(水) 19:06:44.50ID:lxmGvu010 >>389
なるほど
ロックって言葉でちょっと意図を勘違いしてた
タスクが実行中ならもう1回呼ばれても実行しないようにしたいってことだったのか
タスクの中には他のスレッドと競合する処理はなく
ifブロックはUIスレッドでのみ実行されるという前提ならいいんじゃねって気がする
なるほど
ロックって言葉でちょっと意図を勘違いしてた
タスクが実行中ならもう1回呼ばれても実行しないようにしたいってことだったのか
タスクの中には他のスレッドと競合する処理はなく
ifブロックはUIスレッドでのみ実行されるという前提ならいいんじゃねって気がする
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 【J SPORTS】FIFA U-17ワールドカップ ★10
- とらせん IPあり
- 巨専】
- こいせん 全レス転載禁止
- 【ATP】テニス総合実況スレ2025 Part 211【WTA】
- ネットでサッカー観戦◆2025-29
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- 地球から無限km先の場所ってどうなっているの?
- 日本、高市のお陰で破滅に近づくwwwwwwww
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- 🖐( -᷄ὢ)俺に挑むのはやめておけ……実力差がありすぎる
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
