!extend:checked:vvvvv:1000:512
■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part93
http://mevius.5ch.net/test/read.cgi/tech/1492818720/
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C#, C♯, C#相談室 Part94
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 935f-5Uxj)
2019/03/20(水) 18:57:36.47ID:ZZcTomnN0723720 (ワッチョイ 11b0-dGLa)
2021/09/10(金) 09:13:28.67ID:GizC5utx0724デフォルトの名無しさん (ワッチョイ 3a2f-aIS6)
2021/09/10(金) 12:03:33.02ID:cGWG4Dd90 つか5万レコードで何するかしらんが、そのままJsonで持つとかないわ
725デフォルトの名無しさん (ワッチョイ 6978-dGLa)
2021/09/10(金) 18:39:49.98ID:Q85sVIDV0 読み込みだけなら…
726デフォルトの名無しさん (ワッチョイ a6da-y61E)
2021/09/10(金) 20:30:22.77ID:VM7twAvm0 条件後出しする馬鹿は死ねば良いのに
727デフォルトの名無しさん (ワッチョイ 3d24-wHYb)
2021/09/11(土) 10:38:13.01ID:vIInvTaz0728デフォルトの名無しさん (ワッチョイ 3dad-CT16)
2021/09/11(土) 11:53:02.01ID:xP5kxsti0 5万レコードぐらいの参照系で頻度が高いものだと結構あって、結局メモリにのせたりしないか?
どうせメモリにのせるし、となると、JSONでもなんでもいいし。
LiteDB推したけど、そういう意味ではRedisはそこまで的外れだと俺は思わんかったぞ。
どうせメモリにのせるし、となると、JSONでもなんでもいいし。
LiteDB推したけど、そういう意味ではRedisはそこまで的外れだと俺は思わんかったぞ。
729デフォルトの名無しさん (ワッチョイ 3d24-wHYb)
2021/09/12(日) 14:33:36.21ID:Rk6Iyibj0 ソースジェネレーターの開発効率悪すぎやろ
マクロと違って受動的な生成できるから便利だけど個人開発程度の規模だと返って遠回りになるな
マクロと違って受動的な生成できるから便利だけど個人開発程度の規模だと返って遠回りになるな
730デフォルトの名無しさん (ワッチョイ 6978-dGLa)
2021/09/12(日) 16:10:35.48ID:fbrsRXQN0 ノウハウが溜まれば効率よくなるんじゃね?
731デフォルトの名無しさん (ワッチョイ f1ad-Ad1G)
2021/09/12(日) 17:45:44.97ID:r8PDzNW10 ウハウハだな
732デフォルトの名無しさん (ワッチョイ 6aad-Ngml)
2021/09/12(日) 22:24:05.20ID:AyzBS9aH0 >>729
どうすれば良くなると思う?
どうすれば良くなると思う?
733デフォルトの名無しさん (ワッチョイ ea6a-dGLa)
2021/09/12(日) 22:29:29.32ID:LdHcNCka0 ソースジェネレーターって何のこと?
734デフォルトの名無しさん (ワッチョイ 6978-dGLa)
2021/09/12(日) 23:35:28.52ID:fbrsRXQN0735デフォルトの名無しさん (ワッチョイ ea6a-dGLa)
2021/09/13(月) 02:03:08.04ID:Dz4DY8v70 ああ、Roslyn関係ね。了解ありがとう
736デフォルトの名無しさん (ワッチョイ 3d24-wHYb)
2021/09/13(月) 09:23:25.05ID:tAtNAwkK0 >>732
StringBuilderオーバーライドしたSourceBuilder的なクラスがあればミスも無くなってマシになるんじゃないか
もしくはUtf8JsonWriterと同じ感じでもいいな
自分で作れって話なんだけど、ソースジェネレーターってWinFormsのInitializeComponent筆頭に内部では元々あった訳だしMS社内ではSourceBuilder的なクラスは既にあるはずだから公開されるんじゃないかと期待してる
StringBuilderオーバーライドしたSourceBuilder的なクラスがあればミスも無くなってマシになるんじゃないか
もしくはUtf8JsonWriterと同じ感じでもいいな
自分で作れって話なんだけど、ソースジェネレーターってWinFormsのInitializeComponent筆頭に内部では元々あった訳だしMS社内ではSourceBuilder的なクラスは既にあるはずだから公開されるんじゃないかと期待してる
737デフォルトの名無しさん (ワッチョイ ea6a-dGLa)
2021/09/13(月) 22:03:41.13ID:Dz4DY8v70 T4テンプレートと組み合わせられないか?(適当)
738デフォルトの名無しさん (ワッチョイ b67c-2Q8u)
2021/09/16(木) 19:12:10.42ID:hnfTT3D30 WebView2でどんなページ開いてもスクロールバーが表示されずページの下の方が見ることができない。
htmlやcssでスクロールバーを非表示にしていないから、WebView2の設定を探してみたけど見つからず。
スクロールバーを表示させるにはどうしたらいいですか?
htmlやcssでスクロールバーを非表示にしていないから、WebView2の設定を探してみたけど見つからず。
スクロールバーを表示させるにはどうしたらいいですか?
739デフォルトの名無しさん (ワッチョイ 0a2c-aIS6)
2021/09/16(木) 20:03:17.64ID:uiNLezeY0 WinForm? WPF?
WPFだと親子関係によっては親が子であるWebView2のレイアウト領域無限に取ったりしてるとか
とりあえずWinFormでもWPFでも特にプロパティとかいじらず普通にブラウザとしてのスクロールバーは出る
WPFだと親子関係によっては親が子であるWebView2のレイアウト領域無限に取ったりしてるとか
とりあえずWinFormでもWPFでも特にプロパティとかいじらず普通にブラウザとしてのスクロールバーは出る
740デフォルトの名無しさん (ワッチョイ b67c-2Q8u)
2021/09/16(木) 20:30:28.11ID:hnfTT3D30741デフォルトの名無しさん (ワッチョイ 5937-zp+c)
2021/09/16(木) 21:01:08.74ID:yaf4gWdF0 親コントロールからはみ出してるんかな
WebView2側のDockを有効にしたら?
WebView2側のDockを有効にしたら?
742デフォルトの名無しさん (ワッチョイ ea87-wHYb)
2021/09/16(木) 21:38:21.29ID:xijkbl3u0 まさに今WebView2を使ってるところだけど普通にスクロール出るね
>>741が正解な気もするけど
>>741が正解な気もするけど
743デフォルトの名無しさん (ワッチョイ 9724-IhC7)
2021/09/17(金) 12:45:26.99ID:cxQX6Vfo0 C#のComInterfaceってちょいちょい頭おかしいな
これとかなんやねん
HRESULT IEnumFORMATETC::Next(ULONG celt, FORMATETC *rgelt, ULONG *pceltFetched);
↓
IEnumFORMATETC.Next(int celt, FORMATETC[] rgelt, int[] pceltFetched);
C#風にラッピングするなら普通はこうやろが
int Next(FORMATETC[] rgelt, ref int pceltFetched); //Span<FORMATETC> rgeltなら尚良し
これとかなんやねん
HRESULT IEnumFORMATETC::Next(ULONG celt, FORMATETC *rgelt, ULONG *pceltFetched);
↓
IEnumFORMATETC.Next(int celt, FORMATETC[] rgelt, int[] pceltFetched);
C#風にラッピングするなら普通はこうやろが
int Next(FORMATETC[] rgelt, ref int pceltFetched); //Span<FORMATETC> rgeltなら尚良し
744デフォルトの名無しさん (アウアウウー Sa5b-hED7)
2021/09/17(金) 13:49:09.55ID:oDWWsmOUa 自動機械で生成したっぽいな
745デフォルトの名無しさん (ワッチョイ 171d-QiSa)
2021/09/17(金) 14:53:12.40ID:J/w/zJeW0 WEBフリーランスで年収1000万円超えないのはどう考えてもおかしい
https://www.youtube.com/watch?v=LoXe8iFAsVs
エンジニアは技術力磨きすぎても金になりません
https://www.youtube.com/watch?v=lM7bc6vX-3M
エンジニアはお金を追求してはいけないという年寄りを論破してみた
https://www.youtube.com/watch?v=qJHCmxFv718
エンジニアが教えるの下手くそな理由を論理的に解説してみた【教育の本質】
https://www.youtube.com/watch?v=3YwyYSj-k2s
派遣エージェントの言う事は9割ウソである理由【カモられない方法】
https://www.youtube.com/watch?v=8DxQFLAuFqo&t=231s
IT業界のヤバすぎる落とし穴5選
https://www.youtube.com/watch?v=WPPCJ4o-mpA
絶対にエンジニアになってはいけない人とは【ハイクラス人材】
https://www.youtube.com/watch?v=kKUC7rZRUtc
【エンジニア】正社員/派遣社員/フリーランスのメリット・デメリットについて
https://www.youtube.com/watch?v=fTG-eMpwhCg
プログラミングスクールを否定する老害どもについて
https://www.youtube.com/watch?v=K2SN-Rr0PgY&t=506s
https://www.youtube.com/watch?v=LoXe8iFAsVs
エンジニアは技術力磨きすぎても金になりません
https://www.youtube.com/watch?v=lM7bc6vX-3M
エンジニアはお金を追求してはいけないという年寄りを論破してみた
https://www.youtube.com/watch?v=qJHCmxFv718
エンジニアが教えるの下手くそな理由を論理的に解説してみた【教育の本質】
https://www.youtube.com/watch?v=3YwyYSj-k2s
派遣エージェントの言う事は9割ウソである理由【カモられない方法】
https://www.youtube.com/watch?v=8DxQFLAuFqo&t=231s
IT業界のヤバすぎる落とし穴5選
https://www.youtube.com/watch?v=WPPCJ4o-mpA
絶対にエンジニアになってはいけない人とは【ハイクラス人材】
https://www.youtube.com/watch?v=kKUC7rZRUtc
【エンジニア】正社員/派遣社員/フリーランスのメリット・デメリットについて
https://www.youtube.com/watch?v=fTG-eMpwhCg
プログラミングスクールを否定する老害どもについて
https://www.youtube.com/watch?v=K2SN-Rr0PgY&t=506s
746デフォルトの名無しさん (ラクッペペ MM8f-j868)
2021/09/22(水) 06:13:29.41ID:4Ss0IIt3M C#向けのMIDLコンパイラが粗末なんだと思う
747デフォルトの名無しさん (ワッチョイ 9f02-6QEw)
2021/09/22(水) 23:29:53.28ID:xBbUkBcb0 時代はCsWin32
748デフォルトの名無しさん (ワッチョイ 1e4b-CG/S)
2021/09/27(月) 12:05:22.09ID:KmbMbzSx0 public Foo<T>(byte[] dat) where T : new() { 〜 };
という定義の関数があります。通常は
var IntData = Foo<int>(dat);
とやって、バイト配列からインスタンスを作成するのですが、Tの部分をType型の変数を使ってインスタンスを作成したいのです。
上記の例でいうと
int intValue = 0;
var t = intValue.GetType();
var IntData = Foo<t>(dat); // 型ではなく変数なのでエラーとなる
とやりたいのです。
なにか方法はないでしょうか。
という定義の関数があります。通常は
var IntData = Foo<int>(dat);
とやって、バイト配列からインスタンスを作成するのですが、Tの部分をType型の変数を使ってインスタンスを作成したいのです。
上記の例でいうと
int intValue = 0;
var t = intValue.GetType();
var IntData = Foo<t>(dat); // 型ではなく変数なのでエラーとなる
とやりたいのです。
なにか方法はないでしょうか。
749デフォルトの名無しさん (ワッチョイ 9210-2hm8)
2021/09/27(月) 13:52:24.89ID:SFJimoDq0 ジェネリック使わないように定義を変えれば?
750デフォルトの名無しさん (ワッチョイ 4b61-2Lmd)
2021/09/27(月) 14:32:14.74ID:0+Ka2zog0 decltype(t)
751デフォルトの名無しさん (ワッチョイ 4b61-2Lmd)
2021/09/27(月) 14:38:26.77ID:0+Ka2zog0 すまんc++と間違えた
752デフォルトの名無しさん (ワッチョイ d6da-22+D)
2021/09/27(月) 15:00:33.89ID:yT+OT+660 許さん。
人世の生き血を啜り
不埒な悪行三昧
人世の生き血を啜り
不埒な悪行三昧
753デフォルトの名無しさん (ワッチョイ 1e4b-CG/S)
2021/09/27(月) 15:54:49.55ID:KmbMbzSx0 >>749
説明を簡易にするためにintにしましたが、実際はclass/struct定義を指定して、
byte配列との相互変換するための自作ライブラリです。
クラス内クラスといった入れ子状態でも動くようにするために、内部から自分自身を
再帰呼び出しするのに、Type型の変数からジェネリックでの呼び出しが出来るように
したいわけです。
説明を簡易にするためにintにしましたが、実際はclass/struct定義を指定して、
byte配列との相互変換するための自作ライブラリです。
クラス内クラスといった入れ子状態でも動くようにするために、内部から自分自身を
再帰呼び出しするのに、Type型の変数からジェネリックでの呼び出しが出来るように
したいわけです。
754デフォルトの名無しさん (アウアウウー Sa43-t/PR)
2021/09/27(月) 15:57:14.59ID:/3k3jyoNa >>748
これならできた
static class Extensions
{
static T Foo<T>(this T x, byte[] dat ) where T:new()
{
return new T();
}
}
型推論はコンパイラの機能。
実行時に決まる型をコンパイラに推論しろってのは無理筋
これならできた
static class Extensions
{
static T Foo<T>(this T x, byte[] dat ) where T:new()
{
return new T();
}
}
型推論はコンパイラの機能。
実行時に決まる型をコンパイラに推論しろってのは無理筋
755デフォルトの名無しさん (ワッチョイ c2bd-dXjy)
2021/09/27(月) 16:15:20.36ID:BlBnXHbl0 危険性を理解した上でBinaryFormatter使え案件では
756デフォルトの名無しさん (ドコグロ MM33-c1VD)
2021/09/27(月) 16:18:23.20ID:rcvaLLYgM757デフォルトの名無しさん (ワッチョイ 9f24-2Lmd)
2021/09/27(月) 16:33:19.87ID:NYWmPD2Y0 C#の標準ライブラリにもよくジェネリック版関数とType版関数があるようにそれ真似ればええだけやろ
後からジェネリック版が続々と追加されたことからも分かるようにType版はリフレクションに頼る羽目になるのでパフォーマンスに劣るがな
そういやネットワークメッセージをルーティングするにあたってそのたびにDynamicInvokeしてるバカなコード書いてる奴思い出したな
後からジェネリック版が続々と追加されたことからも分かるようにType版はリフレクションに頼る羽目になるのでパフォーマンスに劣るがな
そういやネットワークメッセージをルーティングするにあたってそのたびにDynamicInvokeしてるバカなコード書いてる奴思い出したな
758デフォルトの名無しさん (ドコグロ MM33-c1VD)
2021/09/27(月) 16:36:51.40ID:rcvaLLYgM ↑頓珍漢すぎるバカw
759デフォルトの名無しさん (アウアウウー Sa43-t/PR)
2021/09/27(月) 16:41:12.52ID:/3k3jyoNa >>756
そっちこそ何を言ってんの。
ジェネリックの型テンプレートはコンパイル時に確定している必要がある。
それをType型の変数tの値(当たり前だが実行時に決まる)からコンパイル時に
推論できるの?
そっちこそ何を言ってんの。
ジェネリックの型テンプレートはコンパイル時に確定している必要がある。
それをType型の変数tの値(当たり前だが実行時に決まる)からコンパイル時に
推論できるの?
760デフォルトの名無しさん (ドコグロ MM33-c1VD)
2021/09/27(月) 16:56:38.77ID:J3rlWY70M761デフォルトの名無しさん (ワッチョイ 7212-2yZa)
2021/09/27(月) 16:59:12.82ID:6TsnNU9s0 >>748
普通にもう一段ジェネリック関数でラップしたらいいだけじゃん
static T Foo<T>(T value, byte[] dat) where T : new() => Foo<T>(dat);
int intValue = 0;
var IntData = Foo(intValue, dat);
普通にもう一段ジェネリック関数でラップしたらいいだけじゃん
static T Foo<T>(T value, byte[] dat) where T : new() => Foo<T>(dat);
int intValue = 0;
var IntData = Foo(intValue, dat);
762デフォルトの名無しさん (ドコグロ MM33-c1VD)
2021/09/27(月) 17:12:05.00ID:J3rlWY70M まあそうなんだけど値を使わないのに引数に指定するのもなんか気持ち悪いし
※ 個人の感想です
※ 個人の感想です
763デフォルトの名無しさん (ワッチョイ 7212-2yZa)
2021/09/27(月) 17:19:29.24ID:6TsnNU9s0764デフォルトの名無しさん (ワッチョイ 7212-2yZa)
2021/09/27(月) 17:25:05.23ID:6TsnNU9s0 それに下手したらintに対してGetType()するとmalloc(sizeof(int32_t) + sizeof(void*) * 2);みたいな処理が内部で走って糞効率悪いぞ(Boxing)
765デフォルトの名無しさん (ワッチョイ 6bad-nXzz)
2021/09/27(月) 17:41:25.60ID:DH+C27O00 戻り値をoutで返せば
766デフォルトの名無しさん (ドコグロ MM33-c1VD)
2021/09/27(月) 17:42:27.32ID:J3rlWY70M767デフォルトの名無しさん (ササクッテロ Sp47-CeRv)
2021/09/27(月) 17:46:34.83ID:OckC1gs8p よしわかった!
リフレクションでジェネリックメソッドを生成しよう!
リフレクションでジェネリックメソッドを生成しよう!
768デフォルトの名無しさん (ワッチョイ 1e4b-CG/S)
2021/09/27(月) 17:47:27.75ID:KmbMbzSx0769デフォルトの名無しさん (ワッチョイ 7212-2yZa)
2021/09/27(月) 17:49:12.35ID:6TsnNU9s0770デフォルトの名無しさん (ドコグロ MM33-c1VD)
2021/09/27(月) 18:13:44.25ID:J3rlWY70M771デフォルトの名無しさん (ワッチョイ 7f01-NT4g)
2021/09/28(火) 15:45:06.15ID:MCa79m/M0 久しぶりにC#で書いてるんで勘違いしてたら悪いんだけど
var str = "abc";
で、strがstring?になるんだけど前からこうだっけ?
非null型にするには string str って書かないといけないんだっけ?
var str = "abc";
で、strがstring?になるんだけど前からこうだっけ?
非null型にするには string str って書かないといけないんだっけ?
772デフォルトの名無しさん (ワッチョイ 6bad-nXzz)
2021/09/28(火) 17:08:52.72ID:SC9lU+iw0 今でもそうじゃない。
Null許容オプションを変えればそうなるが、デフォルトは無効。
Null許容オプションを変えればそうなるが、デフォルトは無効。
773デフォルトの名無しさん (ワッチョイ 0337-4+1t)
2021/09/28(火) 20:55:13.11ID:v2L5F78s0 C#8.0以前と昔と同じ動きになるようにしてるからオプションデフォだと?付けてるんだぞたしか
774デフォルトの名無しさん (ワッチョイ 9202-Ko3R)
2021/09/29(水) 03:06:23.18ID:hXKTXicB0775デフォルトの名無しさん (ワッチョイ ff79-kJoN)
2021/10/05(火) 14:17:33.11ID:/KAzPTlo0 unsafeでゴリゴリするのとNETの中間言語(IL)を直書きするのってどっちが速くなるのかな
unsafeでゴリゴリも結局ILに直されるんだよね?
unsafeでゴリゴリも結局ILに直されるんだよね?
776デフォルトの名無しさん (ワッチョイ ff10-bGYl)
2021/10/05(火) 14:22:47.33ID:NZoK2SbN0 そらちゃんと最適化されたものがかけるならILじゃないの?
規模次第だけど大抵はunsafeが早くなると思う
規模次第だけど大抵はunsafeが早くなると思う
777デフォルトの名無しさん (ワッチョイ 736e-lQk+)
2021/10/06(水) 20:28:42.14ID:E0v4aPqh0 ネットワークドライブ上のNASに映像ファイルをコピーする処理をTaskで非同期処理を
おこなっているのですが、たまーにネットワークがきれるのかNASの問題なのか
転送がとまったきりになります
CancelTokenでファイルごとにキャンセルは入れられるよう進捗ウィンドウを作ってるのですが
File.Copyが1つのファイルで走り始めてから止まり、Exceptionも吐かないので
中断処理入れようにもどうにもならず
とりあえずApplication.Exit()でアプリごと落としてお茶を濁しているのですが
なにかうまい方法ありますか?
おこなっているのですが、たまーにネットワークがきれるのかNASの問題なのか
転送がとまったきりになります
CancelTokenでファイルごとにキャンセルは入れられるよう進捗ウィンドウを作ってるのですが
File.Copyが1つのファイルで走り始めてから止まり、Exceptionも吐かないので
中断処理入れようにもどうにもならず
とりあえずApplication.Exit()でアプリごと落としてお茶を濁しているのですが
なにかうまい方法ありますか?
778デフォルトの名無しさん (ワッチョイ 53ad-vizG)
2021/10/06(水) 21:02:20.21ID:2LxqHeEp0 なす
779デフォルトの名無しさん (ワッチョイ 435f-TKH3)
2021/10/06(水) 21:37:29.69ID:dgJN1SIT0 すし
780デフォルトの名無しさん (ワッチョイ ff5b-2jfQ)
2021/10/06(水) 21:47:22.32ID:le4x28/F0781デフォルトの名無しさん (アウアウウー Sa27-Q4Ob)
2021/10/06(水) 23:26:50.78ID:9/4lkKr3a >>777
問題を良く理解してないけど
まあ生ThreadならAbortできるね。
昔はデッドロックするバグがあるネイティブdllの関数呼ぶときにはこれ使ってた。
さすがに今時は別の方法が用意されてるはずだと思うけど
問題を良く理解してないけど
まあ生ThreadならAbortできるね。
昔はデッドロックするバグがあるネイティブdllの関数呼ぶときにはこれ使ってた。
さすがに今時は別の方法が用意されてるはずだと思うけど
782デフォルトの名無しさん (ワッチョイ 7354-RnoF)
2021/10/07(木) 04:29:01.91ID:NGhNP/TI0 HOMOHOMOHOMOHOMOHOMOHOMOHOMOHOMOHOMOHOMOHOMOHOMO
783デフォルトの名無しさん (ワッチョイ 635f-GJBa)
2021/10/08(金) 20:11:01.95ID:TjcV2IEr0784デフォルトの名無しさん (ワッチョイ 3b6e-twAR)
2021/10/17(日) 11:37:08.06ID:h6ZKeWCX0785デフォルトの名無しさん (ワッチョイ 8b24-an4T)
2021/10/18(月) 18:50:18.68ID:+thFiXiN0 MSの.NETチームってアジア人少ないのか?
表に出てくるメンツ見てると黒人とかラテンアメリカンはちょいちょいいるのにアジア人がほぼいないんだが、
アメリカのIT企業って総じて黒人よりアジア人の方が従業員比率高いはずなのにおかしいだろ
ポリコレソードで一刀両断して良いか?
表に出てくるメンツ見てると黒人とかラテンアメリカンはちょいちょいいるのにアジア人がほぼいないんだが、
アメリカのIT企業って総じて黒人よりアジア人の方が従業員比率高いはずなのにおかしいだろ
ポリコレソードで一刀両断して良いか?
786デフォルトの名無しさん (ワッチョイ 6b01-MroR)
2021/10/18(月) 21:33:52.17ID:PYlrOq+m0 何のために?
787デフォルトの名無しさん (ワッチョイ bb78-ZO17)
2021/10/18(月) 22:56:12.18ID:Yxn1i5HN0 >>785
キモッ!
キモッ!
788デフォルトの名無しさん (ワッチョイ 7b28-Avck)
2021/10/19(火) 09:12:00.45ID:dghFXsSl0 ブリザードの闇を知ってからはアメリカのIT業界も色々とやべぇんだなとは思った
ああいう闇があるからこそ日本人からは到底理解できないようなポリコレが流行るのも致し方ないと思えるようになったわ
ああいう闇があるからこそ日本人からは到底理解できないようなポリコレが流行るのも致し方ないと思えるようになったわ
789デフォルトの名無しさん (ワッチョイ ef4b-0ECy)
2021/10/19(火) 10:22:17.02ID:PEqeSIiy0 Streamで非同期のreadを行っています。Stream.BeginRead(〜);
このBeginReadをキャンセルするにはどうすれば良いのでしょうか。
通常の読み込みだと、BeginReadで指定したコールバック先でStream.EndRead(〜);を実行するのですが、1バイトも受信していない場合、EndReadを実行すると待ち状態になってしまいます。
このBeginReadをキャンセルするにはどうすれば良いのでしょうか。
通常の読み込みだと、BeginReadで指定したコールバック先でStream.EndRead(〜);を実行するのですが、1バイトも受信していない場合、EndReadを実行すると待ち状態になってしまいます。
790デフォルトの名無しさん (ワッチョイ 1f2c-tOpD)
2021/10/19(火) 10:44:59.71ID:cm6tlOC00 StreamをDisposeすればEndReadで例外が出る
791デフォルトの名無しさん (ワッチョイ ef4b-0ECy)
2021/10/19(火) 10:55:17.24ID:PEqeSIiy0792デフォルトの名無しさん (ドコグロ MMcf-ORg4)
2021/10/19(火) 14:36:25.49ID:P0vvwNoGM >>789
BeginRead 見たら ReadAsync の使用を検討しろって書いてあるからそうしたら?
BeginRead 見たら ReadAsync の使用を検討しろって書いてあるからそうしたら?
793デフォルトの名無しさん (アウアウウー Sacf-Avck)
2021/10/19(火) 15:15:21.66ID:L0dEwSHfa Readがデッドロックするような状態なら常識的にはWriteが成功するとは
考えにくい気がするんだけど違うのかなw
考えにくい気がするんだけど違うのかなw
794デフォルトの名無しさん (ワッチョイ 1f2c-tOpD)
2021/10/19(火) 15:37:59.83ID:cm6tlOC00 デッドロックは言葉の使いどころが違うと思う
ReadAsyncでCancellationToken渡したとしても
CancellationTokenSource.Cancelでキャンセルできるかどうかは具象クラスの実装次第なのに注意
.NET Core系は多分問題ないと思うけど.NET Framework系はあんまりサポートしてない印象
ReadAsyncでCancellationToken渡したとしても
CancellationTokenSource.Cancelでキャンセルできるかどうかは具象クラスの実装次第なのに注意
.NET Core系は多分問題ないと思うけど.NET Framework系はあんまりサポートしてない印象
795デフォルトの名無しさん (ワッチョイ ef4b-0ECy)
2021/10/19(火) 15:58:37.60ID:PEqeSIiy0 デッドロックがどこで出たかわかりませんが、やりたいのは名前付きパイプでのプロセス間の相互送受信です。
796デフォルトの名無しさん (ワッチョイ 9fe4-k6xU)
2021/10/19(火) 18:22:02.29ID:yAs/qSwO0 >>789
適当なこと書くけど、コールバック先の中でEndReadするのだと、データの読み取りが
完了しない限り実行されないのでダメなのではないかな?
やるならばBeginReadの返却値であるIAsyncResultの内容を保存しておいて、Read
処理をやめたくなったら、保存しておいたIAsyncResultの値をEndReadに指定して
呼び出すんじゃないのかな?
適当なこと書くけど、コールバック先の中でEndReadするのだと、データの読み取りが
完了しない限り実行されないのでダメなのではないかな?
やるならばBeginReadの返却値であるIAsyncResultの内容を保存しておいて、Read
処理をやめたくなったら、保存しておいたIAsyncResultの値をEndReadに指定して
呼び出すんじゃないのかな?
797デフォルトの名無しさん (アウアウウー Sacf-Avck)
2021/10/19(火) 18:27:10.49ID:5eWBXwewa798デフォルトの名無しさん (エアペラ SD4f-VuU6)
2021/10/19(火) 18:29:59.71ID:F0Ya2cseD >>797
デッドロックについて言ってること全部間違ってるように見える
デッドロックについて言ってること全部間違ってるように見える
799デフォルトの名無しさん (ワッチョイ dfbd-lptH)
2021/10/19(火) 18:32:13.92ID:q5Q5l1tU0 >>797
言いません
言いません
800デフォルトの名無しさん (ワッチョイ dbad-8a12)
2021/10/19(火) 18:42:34.22ID:mUw6gLDG0 絶対言わない
801デフォルトの名無しさん (アウアウウー Sacf-Avck)
2021/10/19(火) 18:45:34.17ID:5eWBXwewa802デフォルトの名無しさん (ワッチョイ dbad-8a12)
2021/10/19(火) 18:47:21.34ID:mUw6gLDG0 勘違いも甚だしい
803デフォルトの名無しさん (エアペラ SD4f-VuU6)
2021/10/19(火) 19:18:16.00ID:F0Ya2cseD >>801
やはり勘違いしてるな
やはり勘違いしてるな
804デフォルトの名無しさん (ラクッペペ MM7f-xEoX)
2021/10/19(火) 19:26:02.78ID:NUYGeUrwM デッドロックとは
対策に徹夜で3日以上かかるバグの事を指す
対策に徹夜で3日以上かかるバグの事を指す
805デフォルトの名無しさん (ドコグロ MMcf-ORg4)
2021/10/19(火) 19:32:00.07ID:8pYZM1g+M806デフォルトの名無しさん (ワッチョイ fb2f-4HJo)
2021/10/19(火) 21:14:28.92ID:dVCJCghn0 そもそも名前付きパイプって同一のストリームを読み書き両用でつかえるのか?
807デフォルトの名無しさん (ワッチョイ 0f2c-4HJo)
2021/10/19(火) 22:15:54.02ID:P+gkhAFH0 組み込みの資格の問題集では、
デッドロックは、資源のたすき掛け
タスクA が、資源X, Y の順にロックして、
タスクB が、資源Y, X の順にロックする
ここで、どのタイミングでデッドロックが起きるか、という問題
デッドロックは、資源のたすき掛け
タスクA が、資源X, Y の順にロックして、
タスクB が、資源Y, X の順にロックする
ここで、どのタイミングでデッドロックが起きるか、という問題
808デフォルトの名無しさん (ワッチョイ 0f63-0fks)
2021/10/20(水) 02:56:42.16ID:KEjGoucL0 rubyガイ、お前には聞いてない
しゃしゃるな
しゃしゃるな
809デフォルトの名無しさん (アウアウウー Sacf-mxW8)
2021/10/20(水) 09:16:14.30ID:OEiI06HQa810デフォルトの名無しさん (アウアウウー Sacf-mxW8)
2021/10/20(水) 09:18:08.43ID:OEiI06HQa >>806
OK
OK
811789 (ワッチョイ ef4b-0ECy)
2021/10/20(水) 09:47:41.27ID:JvBM85mK0 最初から説明すると、やりたいのは.NET5のWorkerServiceで作成したWindowsサービスの状態をタスクトレイに表示することです。
Windowsサービスから直接タスクトレイに表示する事が出来ないということで、タスクトレイ表示用のフォームアプリを作成。
両者間でプロセス間通信を行い、フォームアプリからWorkerServiceへの問い合わせという形では問題なく通信できました。
※フォームアプリ:送信専用/WorkerService:受信専用
ただ、WorkerServiceの状態が変わるのは希なことなので、フォームアプリから頻繁に問い合わせるのは無駄が多いので、
フォームアプリからWorkerServiceへの接続以外はWorkerService側からのPush通信を行うように修正しました。
フォームアプリ:受信待機、WorkerService:送信。WorkerService:受信待機、フォームアプリ:送信のテストは正常に終わりました。
送信はいつ発生するかわからないため、双方を受信待機にしたところ、その状態では送信が出来ません。
受信待機状態で無ければ送信出来るのは確認しているので、受信待機を解除出来れば送信出来ると考え、その方法を探している途中です。
>>806
上に書いているとおり、受信待機状態で無ければ送信できます。もちろん、受信待機状態で相手から送信されれば受信できます。
実際にテストし、確認しています。
Windowsサービスから直接タスクトレイに表示する事が出来ないということで、タスクトレイ表示用のフォームアプリを作成。
両者間でプロセス間通信を行い、フォームアプリからWorkerServiceへの問い合わせという形では問題なく通信できました。
※フォームアプリ:送信専用/WorkerService:受信専用
ただ、WorkerServiceの状態が変わるのは希なことなので、フォームアプリから頻繁に問い合わせるのは無駄が多いので、
フォームアプリからWorkerServiceへの接続以外はWorkerService側からのPush通信を行うように修正しました。
フォームアプリ:受信待機、WorkerService:送信。WorkerService:受信待機、フォームアプリ:送信のテストは正常に終わりました。
送信はいつ発生するかわからないため、双方を受信待機にしたところ、その状態では送信が出来ません。
受信待機状態で無ければ送信出来るのは確認しているので、受信待機を解除出来れば送信出来ると考え、その方法を探している途中です。
>>806
上に書いているとおり、受信待機状態で無ければ送信できます。もちろん、受信待機状態で相手から送信されれば受信できます。
実際にテストし、確認しています。
812789 (ワッチョイ ef4b-0ECy)
2021/10/20(水) 10:34:02.67ID:JvBM85mK0 >>796
コールバック先ではなく、送信用関数の頭でキャンセルするようにしています。
BeginReadの返り値を保存。キャンセルしたい場所でEndReadの引数に渡すようにしているのですが、EndReadを呼び出すとそのままだんまりです。
なので、なにか手順でもあるのかと思い、検索をかけたのですが解決法がわからないため、ここで質問しました。
コールバック先ではなく、送信用関数の頭でキャンセルするようにしています。
BeginReadの返り値を保存。キャンセルしたい場所でEndReadの引数に渡すようにしているのですが、EndReadを呼び出すとそのままだんまりです。
なので、なにか手順でもあるのかと思い、検索をかけたのですが解決法がわからないため、ここで質問しました。
813デフォルトの名無しさん (アウアウウー Sacf-mxW8)
2021/10/20(水) 10:39:51.36ID:OEiI06HQa >Windowsサービスから直接タスクトレイに表示する事が出来ない
サービスの登録で「デスクトップとの対話を許可」してあれば表示出来ますよ?
サービスの登録で「デスクトップとの対話を許可」してあれば表示出来ますよ?
814デフォルトの名無しさん (ワッチョイ fb2f-4HJo)
2021/10/20(水) 10:42:48.21ID:Es2OjjC60 送信がちゃんと動いてるならそこ変える必要なんてないし
送信と別に受信用の接続つくれば解決するんじゃ
送信と別に受信用の接続つくれば解決するんじゃ
815789 (ワッチョイ ef4b-0ECy)
2021/10/20(水) 10:51:47.47ID:JvBM85mK0816デフォルトの名無しさん (アウアウウー Sacf-mxW8)
2021/10/20(水) 11:37:20.61ID:OEiI06HQa Windows 管理ツール
→ サービス
サービス名で右クリックしてプロパティ → ダイアログ → ログオン
「デスクトップとの対話をサービスに許可」にチェック
HKLM\\SYSTEM\\CurrentControlSet\\Control\\Windows\\NoInteractiveServices
0にする必要があるかも
→ サービス
サービス名で右クリックしてプロパティ → ダイアログ → ログオン
「デスクトップとの対話をサービスに許可」にチェック
HKLM\\SYSTEM\\CurrentControlSet\\Control\\Windows\\NoInteractiveServices
0にする必要があるかも
817789 (ワッチョイ ef4b-0ECy)
2021/10/20(水) 14:16:23.47ID:JvBM85mK0 >>816
教えていただきたいのは設定の方法ではなく、.NET 5のServiceWorkerでタスクトレイにアイコンを表示する方法です・・・
教えていただきたいのは設定の方法ではなく、.NET 5のServiceWorkerでタスクトレイにアイコンを表示する方法です・・・
818デフォルトの名無しさん (ワッチョイ 1f2c-tOpD)
2021/10/20(水) 15:27:59.69ID:G+Qou/Ta0 さすがにサービス作るのは面倒だから同一プロセス内で試しただけだけど
BeginRead中に普通にWriteできたよ
NamedPipeXxxStreamをnewする時にPipeOptions.Asynchronous指定してる?
BeginRead中に普通にWriteできたよ
NamedPipeXxxStreamをnewする時にPipeOptions.Asynchronous指定してる?
819デフォルトの名無しさん (アウアウウー Sacf-mxW8)
2021/10/20(水) 15:55:53.51ID:5SoWglAaa820デフォルトの名無しさん (ワッチョイ ef4b-0ECy)
2021/10/20(水) 16:10:12.00ID:JvBM85mK0821デフォルトの名無しさん (スップ Sdbf-Nmy6)
2021/10/20(水) 17:19:49.71ID:VKVb6/esd 前提をすっ飛ばすと突拍子もない解決手段を思いつきそれを実現しようとしてしまい四苦八苦する典型例みたいですね
822デフォルトの名無しさん (アウアウウー Sacf-Avck)
2021/10/20(水) 18:07:28.07ID:jvdlGdZPa レジ袋有料化みたいな話だね
ただ、批判する意図はないけど、位置の概念がないストリームなら普通「全二重」であるはずだ、
ってのはちょっと考えれば気づけたはずじゃなかなとは思う
ただ、批判する意図はないけど、位置の概念がないストリームなら普通「全二重」であるはずだ、
ってのはちょっと考えれば気づけたはずじゃなかなとは思う
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す ★3 [蚤の市★]
- 中国側が首相答弁の撤回要求、日本側拒否 [夜のけいちゃん★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 映画「鬼滅の刃」の興行収入急減、日本行き航空券大量キャンセル…中国メディア報道 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 「タワマン天国」に飛びつく若者…SNSに転がる「成功体験」に続けるのか 湾岸エリアの業者が語った現実 [蚤の市★]
- 【悲報】高市効果で「1ドル=160円」が相場へwwwwwwwwwwwwwwwwwwwwwwwwwwwww 止まらぬ高市円安💥💥 [871926377]
- 小川彩佳アナ「高市総理はここまで影響が出ることを想像して発言したんでしょうか」高市ソルジャー「!!!!(シュババババ)」 [931948549]
- 【悲報】おこめ券、9.5億円配布分のうち2.4億が経費、うちJAが1億円中抜き🤗高市ありがとう [359965264]
- FGOで好きなサーヴァントがアビゲイル、北斎、楊貴妃なんだが
- 【悲報】高市有事で日本に同調する国、1つも現れないwwwwwwwwwwwwwww [603416639]
- 自閉症が「んなっしょい」と連呼するお🏡
