C#, C♯, C#相談室 Part98 (518レス)
上下前次1-新
334: (ワッチョイ bfbc-6F/1) 04/16(水)05:53 ID:HaWtxdw70(1/3) AA×

335: (ワッチョイ bfbc-6F/1) 04/16(水)05:58 ID:HaWtxdw70(2/3) AAS
あ、TaskCreationOptionsのTaskが抜けてる…
async Task SetTextAsync()の代わりにasync Task<string> GetTextAsync()だったら
StartNew<Task<string>>にしてvar text = await task.Resultすればいい
336: (ワッチョイ 5f90-YkUp) 04/16(水)07:31 ID:QZV5gxIh0(1/2) AAS
ああ、ありがとうごいます
それっぽいです
要はスレッドプールなどで実行されてるメソッドから
途中でダイアログなどを出してユーザのアクションの結果で更に処理を
進めるかキャンセルするかを決定したかったにです
同期コンテキストは調べたのですがこのPostなんたらじゃできないなと..
TaskSchedulerの方から攻めるのですね
ありがとうございます
337: (ワッチョイ 5f90-YkUp) 04/16(水)07:41 ID:QZV5gxIh0(2/2) AAS
ボタンなど押して非同期メソッドを呼び出す
この時、非同期メソッドには介入が必要な時に呼び出される非同期コールバックを渡せるようにする
呼び出し側で、非同期コールバックとして
ダイアログなどをだしたりする
ダイアログの表示などはUIスレッド実行したかった
こんな感じでした
338: (ワッチョイ 27d7-kxmC) 04/16(水)15:31 ID:yzNZC+ym0(1/3) AAS
BOOL TestFunc(DWORD dwType, LPBYTE pBuffer, LPDWORD pcbBufSize);
dwType:欲しいデータのタイプコード
pBuffer:要求したデータを入れるバッファへのポインタ
pcbBufSize:pBufferが指すバッファのサイズ
例えば↑のような関数をエクスポートしてるアンマネージDLLがあって
DllImportする時のプロトタイプ宣言ってどう書いたらいいんでしょ?
339: (ワッチョイ 27d7-kxmC) 04/16(水)15:33 ID:yzNZC+ym0(2/3) AAS
LPDWORDはref uintでいいのかなと思うけど
LPBYTEとか、それこそLPVOIDだのハンドル系受け取る引数なんかはどう宣言したものかよく解らなくて
340(1): (ワッチョイ bfbc-6F/1) 04/16(水)19:05 ID:HaWtxdw70(3/3) AAS
典型的にはこう
bool TestFunc(uint dwType, byte[] pBuffer, out uint pcbBufSize);
ref/outで宣言すると使いやすいけどNULLを渡せなくなるってのが問題になったりすることもある
ケースバイケースなので一概には言えない
ポインタが絡むなら誰がメモリ確保して誰がどうやって解放するのかを把握してないといけない場合もある
341: (オイコラミネオ MM0b-z3tz) 04/16(水)19:58 ID:VD2CYluqM(1) AAS
第三引数は普通はoutじゃないきがするけど
342: (ブーイモ MM8f-xKSY) 04/16(水)20:27 ID:qW3EbLcWM(1) AAS
outだと呼び出し元からバッファサイズを渡せないな
343: (ワッチョイ 7f10-z3tz) 04/16(水)20:47 ID:JiAmFx7+0(1) AAS
refじゃあかんの?
344: (ワッチョイ 27d7-kxmC) 04/16(水)20:48 ID:yzNZC+ym0(3/3) AAS
>>340
おぉ、ありがとう
ちょっとそれ元に弄ってみるます
345(1): (ワッチョイ ed96-VXNn) 04/20(日)10:42 ID:T4EZ0xEH0(1/2) AAS
refとかout使うと機械語的にはゴミラッパーが生成される
ついでにboolも実はネイティブ型ではないので同様にゴミが生成される
多少可読性や安全性を犠牲にして良いなら
int TestFunc(uint dwType, byte* pBuffer, uint* pcbBufSize)とすればC/C++と遜色ない機械語になる
戻り値はintなので != 0としてbool判定をする手間がかかるけどね
ついでに.NETCore系統で且つ内部でIOなどを行わずに計算量が少なく割とすぐ戻る事が確定している場合は[DllImport("native.dll"), SuppressGCTransition]とすると尚良し
346: (ワッチョイ ed96-VXNn) 04/20(日)10:47 ID:T4EZ0xEH0(2/2) AAS
もしネイティブ側の戻り値がBOOLではなくboolならC#側はbyteにすればいい
boolって実は結構罠だからな
347(1): (ワッチョイ 4954-EnZh) 04/21(月)11:37 ID:ed9AfVbw0(1) AA×

348: (ワッチョイ 6610-h0BB) 04/21(月)14:43 ID:AUqiwuPT0(1) AAS
何のためのVOIDポインタかで変わるしIntPtrで良いもんでもないわ
まぁなんだ、CharGPTなんて言うアホは黙っとけw
349: (ワッチョイ a6ce-i6bQ) 04/22(火)19:34 ID:rMo0RJWh0(1) AAS
Copilot「僕の出番ですね!」
350: (ワッチョイ 79d7-vVAN) 04/23(水)08:49 ID:eLYGqJZZ0(1) AAS
去ね
351: (スフッ Sd0a-NF34) 04/23(水)12:17 ID:snQ3Sxp8d(1) AAS
wchar : 「神は我を見放したのか」
352: (オイコラミネオ MM71-h0BB) 04/23(水)20:01 ID:WPvg2tW3M(1) AAS
>>347
ChatGPTはc#弱いな
353(1): 警備員[Lv.1][新芽] (ワッチョイ a69e-kvZ8) 04/24(木)01:47 ID:MPcZRdS90(1) AAS
>>345
最近のC#はMIL(IL?)でなくマシン語を直接()生成するようになったのですか
354(2): (ワッチョイ f978-fvra) 04/24(木)21:13 ID:985jarF60(1) AAS
>>353
最近は native AOT といってそういうことができる
リフレクションが使えないなど制限もあるけど
元のレス先の345は、たぶん native AOT とか関係なく、中間言語が生成するコードも指して機械語と言ってると思う
355: 警備員[Lv.3][新芽] (ワッチョイ 65eb-kvZ8) 04/24(木)21:27 ID:WNuC4TAo0(1) AAS
>>354
なるほど、ありがとうございました!!
356: (ワッチョイ ed96-VXNn) 04/25(金)11:23 ID:reKQm/Xa0(1) AAS
>>354
ILの話はしてない
nativeAOT及びJITが最終的に生成するアセンブラを指して言ってる
パフォーマンス目的でC/C++と連携しようとすると返ってパフォーマンス落ちる事も多いからな
機械生成のゴミラッパーが挟まると呼び出しコストがdll内部のルーチンより1万倍掛かるとかザラにあるし
357: (ワッチョイ 79d7-vVAN) 04/25(金)12:53 ID:RL99gkZ90(1) AAS
まぁ、アンマネージ呼び出しをパフォーマンス目的でやるもんじゃないしな
358: (ワッチョイ 3778-8SS3) 04/27(日)16:38 ID:jnYDAPp70(1) AAS
LibraryImport属性を使うとDllImport属性より最適化されたコードが出力されたりするの?
359(1): (ワッチョイ 7761-tU9d) 05/03(土)12:39 ID:GwMmJ/YG0(1/2) AAS
オリジナルのDataGridViewの列を作りたいんですが、デザインビューのDataGridViewからオリジナルの列を追加する方法ってありますか?
360: (ワッチョイ d7d7-U1DS) 05/03(土)14:19 ID:ZbkD0HOB0(1) AAS
>>359
オーナードローしたいという事?
361: (オイコラミネオ MM5b-5rsl) 05/03(土)14:43 ID:rfaECn6+M(1) AAS
列A 列Bがあって 列C作ってA+Bを表示したいと言うことでは?
362: (ワッチョイ 7761-tU9d) 05/03(土)15:51 ID:GwMmJ/YG0(2/2) AAS
DataGridViewColumnを派生させたオリジナルの列をフォームデザインビューから列に追加したいんです
363: (ワッチョイ 9f79-q4+Y) 05/03(土)16:55 ID:h9Jrb8E+0(1) AAS
lこの辺りを駆使してDataGridViewColumnクラスを作るとか
外部リンク[html]:dobon.net
上下前次1-新書関写板覧索設栞歴
あと 155 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.057s