ふらっと C#,C♯,C#(初心者用) Part158

■ このスレッドは過去ログ倉庫に格納されています
2023/03/26(日) 07:31:00.51ID:2LMOL5Ty0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を3行冒頭に書くこと(1行分は消えて表示されない為、もう1行は予備)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください。見かけたらNGしましょう。相手してしまったらあなたも荒らしです
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part157
https://mevius.5ch.net/test/read.cgi/tech/1669349768/
■関連スレ
C#, C♯, C#相談室 Part97
https://mevius.5ch.net/test/read.cgi/tech/1671585518/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/
初心者はまずVisual Studioを使いましょう。なおVisual Studioの使い方などに関しては各バージョンで違うので専用スレでお願いします
http://www.visualstudio.com/downloads/
■情報源
https://learn.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://learn.microsoft.com/en-us/dotnet/standard/class-libraries
https://referencesource.microsoft.com/
https://source.dot.net/
・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
++C++; // 未確認飛行 C
https://ufcpp.net/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2023/05/03(水) 11:04:19.17ID:g2t1b8zF0
>>358
【License】ライセンス総合【利用許諾】
https://mevius.5ch.net/test/read.cgi/tech/1266247461/
2023/05/03(水) 11:36:28.25ID:bhz/zA6o0
>>343
これかっこいい
使わせてもらお
2023/05/03(水) 12:06:52.63ID:0fnUMlbu0
>>360
実績が伴わないとしょっぱい空気になりそう

でもお前の給料20万じゃん・・・?
的なw
2023/05/03(水) 12:17:42.17ID:GN2zt4Uy0
上で出てる動けばいいじゃん精神よりは億倍マシかと
363デフォルトの名無しさん (ワッチョイ 9f7f-ExZu)
垢版 |
2023/05/03(水) 12:24:06.51ID:XvXH8q6A0
easyかつsimpleがいいならpythonやっとけ
2023/05/03(水) 12:27:13.86ID:iydNsBEo0
動けば良いじゃん精神の方が金は稼げるよ

だってIT技術者でも無い会社経営層は技術持ってても評価しないもん
技術持ってる持ってない関係なしに稼げるシステム作った奴を評価する

つうかこの板使っておいて元の2ちゃんねる作った億稼いだひろゆき自体が動けば良いじゃん精神だぞ
自身の配信でもそう言ってるじゃん
こういう技術どうこう言う技術者は無能ってさw
2023/05/03(水) 12:31:50.95ID:6d/7YSFK0
そそ、使いもしない単体モジュールの境界テストとか負荷テストとか無駄
トータルできちんと動いてくれればそれで良い
366デフォルトの名無しさん (スッップ Sdbf-fitb)
垢版 |
2023/05/03(水) 12:48:43.53ID:foxDzL7Ed
test
367デフォルトの名無しさん (ワッチョイ 57ad-0AmK)
垢版 |
2023/05/03(水) 13:19:12.96ID:PpDaqr1l0
そんであるとき負荷が掛かったりちょっと改修したときに爆発する
2023/05/03(水) 13:25:11.18ID:ll4FWYPGp
>>367
改修したらトータルできちんとテストしたら良いだけだろ
2023/05/03(水) 13:25:47.69ID:ll4FWYPGp
むしろ改修した箇所だけのテストとかあり得ないよな
370デフォルトの名無しさん (ブーイモ MMbf-SYdp)
垢版 |
2023/05/03(水) 13:27:55.56ID:t3wVQNi7M
使いもしない単体モジュールがそもそもなぜあるの?
テストするまでもなく削除すればいいのに
2023/05/03(水) 13:28:01.67ID:RLCA5WWQ0
その「トータルできちんとテスト」ってなんだ?
2023/05/03(水) 13:31:19.49ID:iydNsBEo0
結合テストとかの事やろ
2023/05/03(水) 13:35:10.87ID:RLCA5WWQ0
結合テストすることを「トータルできちんとテスト」って呼ぶ層があるんだ
俺の知らん世界だな…
2023/05/03(水) 13:35:53.83ID:iydNsBEo0
>>370
普通にあるやろ

使うと思ってとか今後の拡張性の為にとかオーバーロード関数用意したけど使われてないとか

特に多いのが今後の拡張性云々とかカスタマイズ用とかってやつ
実際に拡張とかカスタマイズする時に使い物にならなくて設計からやり直す
つまり全くの無駄
2023/05/03(水) 13:39:34.40ID:iydNsBEo0
>>373
結合テストは俺が勝手に言っただけや
でもリリース前ってそれだけじゃ無いじゃん
しかもそれって会社とかでも違うやん
だからどれとは言えないもんやで

俺の会社だと結合テスト以外だと外部にセキュリティテスト依頼したり社内の品管のテストとシステム監査が入る
2023/05/03(水) 13:41:01.73ID:eaeSSGs50
使われないモジュールを書いてしまうおじさんや、非機能要件を無視する(あるいは認識できない)おじさんも淘汰される
2023/05/03(水) 13:45:11.16ID:RLCA5WWQ0
> セキュリティテスト依頼したり社内の品管のテストとシステム監査が入る

こんなテストや監査が想定されてる中、ユニットテストが無駄だって思ってるってこと?
2023/05/03(水) 13:51:12.96ID:RLCA5WWQ0
ちょっとまって!

> 外部にセキュリティテスト依頼したり社内の品管のテストとシステム監査が入る

こんなプロジェクトで「動けばいい」ってスタンスで仕事してんのか?
マジか
2023/05/03(水) 13:51:42.78ID:iydNsBEo0
>>377
俺が言った訳じゃ無いけどなw

まあ俺は単体テストはアリだと思うぞ
単体テストの結果でもって要は作業完了証明やろ
逆に言えば以降は俺の責任じゃ無いと言えるし仕様変更は別に金取れる
2023/05/03(水) 13:53:02.57ID:iydNsBEo0
>>378
そうだぞ

だって製品の検査で調べるのはその動くかどうかじゃん
中のコードがどうとか技術がどうとか関係無いやん
2023/05/03(水) 13:55:01.32ID:RLCA5WWQ0
すごいな。そのプロジェクト
俺の知ってる世界だと、そんなコード見せられたらレビュアーが怒り狂うわ
2023/05/03(水) 13:57:38.37ID:iydNsBEo0
>>381
多分お前が普段使ってる様なアプリもそんなもん

その神経質で無能なレビューアーが関係してるお前のシステムって世界でどんだけ売れてんのって話
2023/05/03(水) 13:59:04.86ID:7KJ/CzIt0
動けばいいとしつこく言ってるやつはただの無職だよ
無職の妄想の中ではそうなんだろうさ
現実には動くのは当然で最低限でしかないんだけどね
2023/05/03(水) 14:03:35.88ID:iydNsBEo0
>>383
そうは言ってるけどじゃあそれ以上に何が必要か言えてないやん

ちなみに話の流れは
>>330
>>333
みたいなコードの内容から来てるんやで
こういうコードが糞だろうが動けば良いって話だから脱線するなよ
お前等っていつも前提間違ってるからなw
2023/05/03(水) 14:06:31.39ID:5+L69Iha0
まああんまり完璧なコードを書くと、その後の仕事がなくなるからな。
2023/05/03(水) 14:09:44.71ID:RLCA5WWQ0
> 777c-KiN+
ついでに聞くけど、お前の中でシステム監査ってどんなもんなの?
2023/05/03(水) 14:15:23.93ID:iydNsBEo0
>>386
すまん無能の質問の意味が分からん

システム監査って経済産業省とかIPAに定義あるよね
普通はそれに準拠したものが一般的だと思うんだ
つまり共通認識じゃないの?

無能の頭の中って俺俺監査があるん?
2023/05/03(水) 14:19:36.70ID:RLCA5WWQ0
> だって製品の検査で調べるのはその動くかどうかじゃん

こんなこと言ってるし、また俺のシラン世界があるのかと
2023/05/03(水) 14:26:32.08ID:iydNsBEo0
>>388
アホw

まさか動くかどうかが機能要件や非機能要件 セキュリティ要件満たしてないと思ってる?
それこそ最低限満たした上で動く事だよね

その上で中のコードが>>384で言った様な糞コードかどうか関係無いよねって話だ

ほら言った様に話の流れが分かって無い
理解してない
前提を間違ってる

無能だな
390デフォルトの名無しさん (ワッチョイ 9f4b-gncP)
垢版 |
2023/05/03(水) 14:26:49.46ID:vL8FscsM0
GWだねぇ
2023/05/03(水) 14:30:01.23ID:RLCA5WWQ0
>>389
> まさか動くかどうかが機能要件や非機能要件 セキュリティ要件満たしてないと思ってる?

システム監査ってそういうことじゃないぞ
お前の中のシステム監査ってどんなもんなん?
2023/05/03(水) 14:37:49.92ID:iydNsBEo0
>>391
繰り返すアホ
393デフォルトの名無しさん (スッップ Sdbf-oJ27)
垢版 |
2023/05/03(水) 14:42:38.57ID:s1pMNzuQd
>>391
お前が間違ってるんじゃ?
経済産業省のシステム監査基準だとセキュリティガイドライン等に準拠してるか云々って書いてあるしそういう事を監査するもんじゃないの?
2023/05/03(水) 14:48:38.92ID:RLCA5WWQ0
俺の知ってる世界だと、システム監査ってのは雑に言うとシステムを体制として担保する方法ができてるかを確認するもの

で、「機能要件や非機能要件 セキュリティ要件」に関連した箇所でいうと、それらの要件が正しく永続的に保証できる証跡が残せるか?って観点で監査される

つまり、

> だって製品の検査で調べるのはその動くかどうかじゃん

ってことにはならんのよ
だから、コーダーが「動けばいい」ってスタンスで仕事してたら、レビュアーが体制としてブチ切れるんだわ

で、お前の中のシステム監査ってどんなもんなん?
2023/05/03(水) 15:09:07.11ID:fD0yPqm80
動けばいいってのは
なぜそう書かないほうが良いのか、ちゃんと理解して説明できないやつの言い訳
まあそう書くなって言ってる奴もちゃんと説明できてないんだがな
2023/05/03(水) 15:19:09.40ID:YldI9T9X0
>>390
GW終わって2ヵ月ちょい経つと今度は夏だねぇってなるんだよな
2023/05/03(水) 15:26:23.95ID:49Yy066J0
ぼんやりとした質問ですが、

Form1にWebView2が合ったとして、Form2でお気に入りを作って、Form2からForm1の
WebView2にナビゲートしたいんです。

やってみたんですが、Form1にあるはずのWebViewがForm2から出てこないんです。

調べてみたらキャスト?とかいうのが必要らしくて、キャストはちんぷんかんぷんです。

コード書いておくので誰かお助けを~

後Form1のWebview2にアクセスしようとしたら保護がかかってしまいました。
ランタイムを噛ませたりとかよく分かりません。

こんな超初心者の俺ですが、助けてください。

private async Task InitializeAsync()
{
await webView21.EnsureCoreWebView2Async(null);
}
private async void Form1_Load(object sender, EventArgs e)
{
await InitializeAsync();

webView21.CoreWebView2.Navigate("https://web.biz-prog.net/";);
}
2023/05/03(水) 15:26:47.58ID:49Yy066J0
private void button1_Click_1(object sender, EventArgs e)
{
Form2 f2 = new Form2(this); // 自フォームへの参照を渡す
f2.Show(); // サブ・フォームを表示
}

ここからForm2

public partial class Form2 : Form
{
Form1 f1;
private object webView21;

public Form2(Form1 f)
{
f1 = f;
InitializeComponent();


試して見たんですが、オートコンプリートに((Form1)).webview2が出てきません
2023/05/03(水) 16:36:13.15ID:YldI9T9X0
Form1に配置してるWebView2がprivateで宣言されてるからじゃないかね
VS使ってるならデザイナーで選択してプロパティウィンドウのModifiersを確認して
PrivateになってるならInternalかPublicにしたらいいよ
2023/05/03(水) 16:48:57.57ID:rOyAnSv/p
プライベートのままアクセサ作れば良くね?
2023/05/03(水) 17:56:30.72ID:DnrzKFHb0
そもそも素人コーディングをやるやつがマトモなアプリ書けるとは思えん
アプリの作り方を勉強した人ならマシなコード書くからな
2023/05/03(水) 19:51:19.18ID:49Yy066J0
>>399-401
解決しました。ありがとうございます。
2023/05/03(水) 21:30:59.09ID:iydNsBEo0
>>394
あのさちゃんと読んだ?

お前は前提を勘違いしてるんだよ
動けば良いってそういう事じゃ無いんよ
2023/05/03(水) 21:35:17.93ID:iydNsBEo0
>>394
もっと分かりやすい例を出そう

例えば同じ処理を100箇所コピペ出実装したとする
普通なら関数化してってやるわな

こんな100箇所コピペした糞コードでもシステム監査や他のテストでは一切問題にならない
動けば良いんだよ
2023/05/03(水) 21:36:12.63ID:7KJ/CzIt0
アスペしつこいな
2023/05/03(水) 21:40:43.87ID:iydNsBEo0
>>405
お前みたいな無能が多くて困ってる
2023/05/03(水) 21:42:02.40ID:iydNsBEo0
もっというと例えばMV系フレームでこの処理はモデルに書くべきだとかどうとか
こういうのもどうでもいい

モデルで書くべきだろうが書くべきで無かろうが

動けば良いんだよ
2023/05/03(水) 21:43:26.02ID:iydNsBEo0
オブジェクト指向もそう
クラス設計がどうだの継承がどうだのどうでもいい

動けば良いんだよ
2023/05/03(水) 21:46:03.28ID:iydNsBEo0
このクラスでカプセル化されてないから云々
どうでも良い

動けば良いんだよ
2023/05/03(水) 21:55:41.82ID:XU1+7Xhm0
触らぬキチに祟りなし
411デフォルトの名無しさん (オッペケ Sr8b-0AmK)
垢版 |
2023/05/03(水) 22:10:57.21ID:7dxnHkZLr
まあ中小規模だと“動けばいい”でやってるのも事実だからなぁ
エクセルにチェックつけてペタペタしてソースは見ないなんてのもザラ
なんならちょっとしたものなら本人が動いてる!で終わりとかね
2023/05/03(水) 22:36:48.59ID:0fnUMlbu0
>>411
動けばいいよりちょっと良くなると
何が良くなるの?
資料も書かないくせに余計な拡張要素入れたがるやつってぶっ殺したくなるんだけど?
お前もその類?
2023/05/04(木) 01:49:28.43ID:s0gu/juAd
可読性がよくなる
バグが入り辛くなる
後釜がコード読んで罵倒せずにすむ
自分がクソコードに遭遇する可能性が減る
2023/05/04(木) 03:35:15.40ID:FCXcO5KQa
資料を書く・書かないとコードを改善する・しないは別問題なのになんかキレ散らかしてるの怖・・・
2023/05/04(木) 06:46:14.26ID:gb1C7wFP0
なんぞ嫌なことでもあったんだろうw
2023/05/04(木) 07:31:56.06ID:iNiPzsH8a
糞コード納品してリテイク食らって動けばいいといくら主張しても却下されてここで八つ当たりしてんじゃね
417デフォルトの名無しさん (ブーイモ MMbf-SYdp)
垢版 |
2023/05/04(木) 08:16:56.65ID:2P3iGn2SM
寿命の短いゲームの開発とかには動けばいいだろのメンタリティでコード書いてるやつが多い結構いる
実際クソコードだからバグ修正のアプデでまたバグるのも日常茶飯事
2023/05/04(木) 10:57:14.77ID:KzOav63c0
オマエらって普段からそんな立派なコード書いてるの?

皮肉でも何でもなく、大手さんの寄越したコードでもネットのサンプルをそのままコピペとか普通にあったんだけど。
アマゾンの AWS 用のサンプルコードとかでも整理なにそれなコードも普通にあるし。
ああいうレベルのものでも水準を満たしていたりするんだろうか。

まあ自分も普段は納品する側の中小だけど。
2023/05/04(木) 11:02:54.68ID:vtPK3lgJ0
>>1読め
2023/05/04(木) 12:11:12.80ID:7U0ATqEaM
>>413
ドキュメントでも書いてよ
2023/05/04(木) 13:12:46.06ID:nZfQ3MKS0
>>418
PSNの個人情報流出思い出した
dobon(だったはず)丸パクリの暗号化だった。"saltは8バイト以上"っていう文字列で復号化できた
オレが作った社内システムも同じことしてた。
社内システムだからセキュリティは気にしてないが。
2023/05/04(木) 13:16:44.41ID:mx5edemad
>>420
クソコードをドキュメントに起こすときのモチベーション低下もあるな
規則性がないからな
あの頃の俺はなんでこんな変な処理を……
2023/05/04(木) 15:58:14.71ID:/htkaizY0
>>422
言い訳はいいから書いて
2023/05/04(木) 16:21:40.44ID:FCTf23V0d
?意味わからん
まさか今から書いて上げろって言ってる?
425デフォルトの名無しさん (ワッチョイ 9354-ouLR)
垢版 |
2023/05/06(土) 20:43:47.65ID:8uPWyiyX0
非同期ファイルコピーのサンプルを探していたら、FileStream を使う方法と File.Copy を使う方法があるようなのですが、どっちがいいのでしょうか?
それぞれのメリット・デメリットが知りたいです。

//方法 1 (FileStream)
private static async Task CopyFileAsync(string sourceFilePath, string destinationFilePath)
{
 using (var sourceStream = new FileStream(sourceFilePath, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize: 4096, true))
 using (var destinationStream = new FileStream(destinationFilePath, FileMode.CreateNew, FileAccess.Write, FileShare.None, bufferSize: 4096, true))
 {
  await sourceStream.CopyToAsync(destinationStream);
 }
}
//方法 2 (File.Copy)
private static async Task<bool> CopyFileAsync(string srcFileName, string destFileName)
{
 await Task.Run(() => File.Copy(srcFileName, destFileName));
 return true;
}
2023/05/06(土) 22:50:57.94ID:v1IlMQax0
とりあえず機能させたいならFileCopyで十分
中断とか進捗状況確認とか融通が利くのがFileStream
2023/05/06(土) 23:28:08.83ID:TzwbEMRu0
File.Copyだと同期処理がスレッドを専有しそう。
FileStream.CopyToAsyncだとそうならないように実装されているのかな?
2023/05/07(日) 00:12:10.49ID:/tWxMywy0
>>426-427
ありがとうございます。
FileStream を使うことにしました。
2023/05/07(日) 00:41:03.38ID:/tWxMywy0
>>425 の方法でファイルコピー後、コピー先ファイルのタイムスタンプを変更しようとしたら、例外が発生します。
頻度は10回に1回あるかないか程度です。
何が原因でしょうか?

static async Task Main(string[] args)
{
await CopyFileAsync("コピー元ファイル名.txt","コピー先ファイル名.txt");
}

static async Task CopyFileAsync(string srcFileName, string destFileName)
{
using (var srcStream = new FileStream(srcFileName, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize: 4096, true))
using (var destStream = new FileStream(destFileName, FileMode.Create, FileAccess.Write, FileShare.None, bufferSize: 4096, true))
{
await srcStream.CopyToAsync(destStream);
//試しにFlush・Close・Dispose 入れてみたけどダメでした。
srcStream.Flush();
destStream.Close();
srcStream.Close();
destStream.Dispose();
srcStream.Dispose();
}
var lastWriteTime = File.GetLastWriteTime(srcFileName);
File.SetLastWriteTime(destFileName, lastWriteTime); //ここで、: '別のプロセスで使用されているため、プロセスはファイル 'コピー先ファイル名.txt' にアクセスできません。'
2023/05/07(日) 00:57:48.70ID:/tWxMywy0
方法 2 (File.Copy) の方法でも発生しました。
まったく原因の見当がつきません・・・
2023/05/07(日) 00:58:07.18ID:AUxqabWy0
ef coreでDBからレコードを大量に取得する場合、
(A)
foreach( var row in await query.ToListAsync() )
で取得する場合と
(B)
foreach( var row in query )
で取得する場合、どちらがアプリサーバで消費するメモリが多いでしょうか?
queryはIQueryable<T>型です。
DBサーバとアプリサーバは分かれています

(A)だとDBサーバから結果が全部返るまで待ってからループ開始、
(B)ならストリーミングで読み出せたところからループ処理
って勝手に想像してたんですが、ef coreで使用するDBMSのミドルウェアに依存でしょうか

具体的にはDBMSはpostgresqlです。
このあたりのドキュメントあったらURL教えてください
2023/05/07(日) 01:21:55.84ID:m4wk6w14M
onedriveとかgoogledriveとかdefenderとかnortonとか
433425 (ワッチョイ 9354-ouLR)
垢版 |
2023/05/07(日) 01:29:00.89ID:/tWxMywy0
とりあえず原因不明なので、最大10回を上限に、例外発生したらリトライするようにしました・・・

int j = 0;
bool b = false;

while (!b || j < 10)
{
 try
 {
  //コピー処理
  b = true;
 }
 catch
 {
  continue;
 }
 j++;
}
2023/05/07(日) 01:37:17.63ID:/tWxMywy0
>>432
Windows Defender 無効にしたら例外が発生しなくなりました!
天才さんありがとうございます!(>▽<)
2023/05/07(日) 08:06:15.51ID:ZcKb5BN5r
>>431
DB絡んでないけど一般論としては
https://atmarkit.itmedia.co.jp/ait/articles/1409/24/news105.html
もっともODBCドライバとかDBプロパイダの作りがザルだとクエリ実行結果を一気に全件取り出して
アプリサーバ上のメモリ上に保持してる可能性もゼロではないけど、postgresならそんなことはないだろう

実体化したくないけど非同期でレコードを取り出したいってことなら
await foreach( var row in query.AsAsyncEnumerable() )
2023/05/07(日) 11:06:44.59ID:AUxqabWy0
>>435
ありがとうございます。
ToList()やToListAsync()はすべての結果が利用可能になるまで何も返されない、つまり
大量レコード処理には向かない

(B)の場合でもAsNoTracking()をつけて変更検知をOFFにしないと
Linq to DBがキャッシュしてしまいメモリ使用量が大きくなる

(B)でさらにI/Oをブロックしたくない場合、非同期ストリームを利用する

ということで大量レコードをチビチビ処理する場合は
async foreach( var row in query.AsNoTracking() )
という書き方に落ち着きました

他の参考URL
https://stackoverflow.com/questions/56176176/difference-between-tolistasync-and-asasyncenumerable-tolist
https://stackoverflow.com/questions/3688213/iterating-through-iqueryable-with-foreach-results-in-an-out-of-memory-exception
2023/05/07(日) 11:09:18.20ID:AUxqabWy0
ミス
最終的に
async foreach( var row in query.AsNoTracking().AsAsyncEnumerable() )
という書き方に落ち着きました
2023/05/07(日) 11:24:15.43ID:4ZIcGn3M0
終わるまでにめっちゃメモリ使って死ぬ感じある
2023/05/07(日) 14:06:12.41ID:O0op5Uvp0
Defenderやらが邪魔するのはそうなんだろうけど
C/C++でACLや属性変更でリトライなんてしてた覚えないからC#のDisposeでファイルがちゃんとクローズできてないだけな気もする
2023/05/08(月) 10:05:23.91ID:3mw2N0vvp
Disposeでクローズなんかしないだろ?
つかそんな実装頼みの使い方してたら痛い目に遭うぞ
2023/05/08(月) 13:04:12.03ID:h5IiweHd0
using制御しかしてないわ
2023/05/08(月) 13:11:33.93ID:x7lJRSufd
>>439-441
>>429はWidows Defenderのせいにして終わってるから
納得できる形で解決してみせてよ
2023/05/08(月) 13:27:23.81ID:Rh3bbmbap
>>442
非同期なら当たり前に発生するなw
2023/05/08(月) 13:29:30.54ID:QcInbmeDM
ファイルを閉じるから横取りされるんだぞ
2023/05/08(月) 13:38:05.76ID:TxJAG0JMd
今回みたいなケースでファイルクローズ直後にファイルいじろうとすると使用中の様な警告出ることあるから
基本的にリトライするようなコード入れてるけどそんなことないのかね
2023/05/08(月) 13:53:31.24ID:xSxPowKip
OS側の処理も非同期なんだと予想
2023/05/08(月) 15:24:20.83ID:NYRttg47d
いちいちリトライなんか仕込んてたらハゲそう
イラネーヨって言ってくれ
2023/05/08(月) 23:17:00.86ID:n3psyKuA0
>>440
IDisposableを継承しているのにクローズしなかったら使い物にならないだろ。

例えばFileStreamクラスのDispose()には、
Stream によって使用されているすべてのリソースを解放します。
とあるので、当然Closeもする。
2023/05/08(月) 23:18:14.32ID:n3psyKuA0
あ、継承じゃなくて実装だ。
2023/05/09(火) 04:40:15.34ID:fisd8t0i0
Disposeの処理の中でClose普通に呼んでたはず
ソース見りゃ分かるやろ
2023/05/09(火) 04:54:39.15ID:b+hc+8Ui0
>>450
>>440が「そんな実装頼みの」って言ったので、あえてソースを見ずにドキュメントの内容で答えた。
2023/05/09(火) 07:21:46.18ID:2h4Q3q9eM
asyncawaitに対応してない何かがあるのかもな
2023/05/09(火) 08:53:33.61ID:F+qDabIr0
自作じゃない.NET純正で、Taskを返す〇〇Asyncメソッドがasyncawait対応してないは無いでしょ
2023/05/09(火) 10:25:27.81ID:wTiHbcrZp
だから、OSだって非同期にファイル処理してるんだろ?
で、完了通知なんて受けて無いw
2023/05/09(火) 11:26:49.94ID:TDrxScizd
C#のファイル操作が遅いからファイルコピーと属性変更との間にWindowsDefebderが割り込んでスキャンされて妨害されるのかもしれない
知らんけど
2023/05/09(火) 11:28:32.40ID:LwvaBWbia
>>455
win32apiを使ってるのでさすがにそれなはい
削除してもすぐにファイルが消えないのはあるあるだからリトライするのが定番
457デフォルトの名無しさん (オッペケ Src7-iqBk)
垢版 |
2023/05/09(火) 11:46:04.35ID:vAJE1vUCr
とはいえ
頻度は10回に1回あるかないか程度
Windows Defender 無効にしたら例外が発生しなく
なら妥当かもしれない
2023/05/09(火) 16:21:49.31ID:GXFqLAgP0
>>429
これ閉じる前にFileStream.SafeHandle使ってSetLastWriteTime(SafeFileHandle, DateTime)のオーバーロード使うのはどうなの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況