[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 07/24 13:23 / Filesize : 265 KB / Number-of Response : 1013
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2023/03/26(日) 07:31:00.51 ID:2LMOL5Ty0.net]
!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の使い方などに関しては各バージョンで違うので専用スレでお願いします
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

423 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 10:57:14.77 ID:KzOav63c0.net]
オマエらって普段からそんな立派なコード書いてるの?

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

まあ自分も普段は納品する側の中小だけど。

424 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 11:02:54.68 ID:vtPK3lgJ0.net]
>>1読め

425 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 12:11:12.80 ID:7U0ATqEaM.net]
>>413
ドキュメントでも書いてよ

426 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 13:12:46.06 ID:nZfQ3MKS0.net]
>>418
PSNの個人情報流出思い出した
dobon(だったはず)丸パクリの暗号化だった。"saltは8バイト以上"っていう文字列で復号化できた
オレが作った社内システムも同じことしてた。
社内システムだからセキュリティは気にしてないが。

427 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 13:16:44.41 ID:mx5edemad.net]
>>420
クソコードをドキュメントに起こすときのモチベーション低下もあるな
規則性がないからな
あの頃の俺はなんでこんな変な処理を……

428 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 15:58:14.71 ID:/htkaizY0.net]
>>422
言い訳はいいから書いて

429 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 16:21:40.44 ID:FCTf23V0d.net]
?意味わからん
まさか今から書いて上げろって言ってる?

430 名前:デフォルトの名無しさん (ワッチョイ 9354-ouLR) [2023/05/06(土) 20:43:47.65 ID:8uPWyiyX0.net]
非同期ファイルコピーのサンプルを探していたら、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;
}

431 名前:デフォルトの名無しさん (ワッチョイ cb10-W4Ad) mailto:sage [2023/05/06(土) 22:50:57.94 ID:v1IlMQax0.net]
とりあえず機能させたいならFileCopyで十分
中断とか進捗状況確認とか融通が利くのがFileStream



432 名前:デフォルトの名無しさん (ワッチョイ c2bd-O5MS) mailto:sage [2023/05/06(土) 23:28:08.83 ID:TzwbEMRu0.net]
File.Copyだと同期処理がスレッドを専有しそう。
FileStream.CopyToAsyncだとそうならないように実装されているのかな?

433 名前:425 (ワッチョイ 9354-ouLR) mailto:sage [2023/05/07(日) 00:12:10.49 ID:/tWxMywy0.net]
>>426-427
ありがとうございます。
FileStream を使うことにしました。

434 名前:デフォルトの名無しさん (ワッチョイ 9354-ouLR) mailto:sage [2023/05/07(日) 00:41:03.38 ID:/tWxMywy0.net]
>>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' にアクセスできません。'

435 名前:425 (ワッチョイ 9354-ouLR) mailto:sage [2023/05/07(日) 00:57:48.70 ID:/tWxMywy0.net]
方法 2 (File.Copy) の方法でも発生しました。
まったく原因の見当がつきません・・・

436 名前:デフォルトの名無しさん (ワッチョイ 5eda-xrk/) mailto:sage [2023/05/07(日) 00:58:07.18 ID:AUxqabWy0.net]
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教えてください

437 名前:デフォルトの名無しさん (ラクッペペ MMde-yLVR) mailto:sage [2023/05/07(日) 01:21:55.84 ID:m4wk6w14M.net]
onedriveとかgoogledriveとかdefenderとかnortonとか

438 名前:425 (ワッチョイ 9354-ouLR) [2023/05/07(日) 01:29:00.89 ID:/tWxMywy0.net]
とりあえず原因不明なので、最大10回を上限に、例外発生したらリトライするようにしました・・・

int j = 0;
bool b = false;

while (!b || j < 10)
{
 try
 {
  //コピー処理
  b = true;
 }
 catch
 {
  continue;
 }
 j++;
}

439 名前:デフォルトの名無しさん (ワッチョイ 9354-ouLR) mailto:sage [2023/05/07(日) 01:37:17.63 ID:/tWxMywy0.net]
>>432
Windows Defender 無効にしたら例外が発生しなくなりました!
天才さんありがとうございます!(>▽<)

440 名前:デフォルトの名無しさん (オッペケ Src7-KeI6) mailto:sage [2023/05/07(日) 08:06:15.51 ID:ZcKb5BN5r.net]
>>431
DB絡んでないけど一般論としては
https://atmarkit.itmedia.co.jp/ait/articles/1409/24/news105.html
もっともODBCドライバとかDBプロパイダの作りがザルだとクエリ実行結果を一気に全件取り出して
アプリサーバ上のメモリ上に保持してる可能性もゼロではないけど、postgresならそんなことはないだろう

実体化したくないけど非同期でレコードを取り出したいってことなら
await foreach( var row in query.AsAsyncEnumerable() )

441 名前:デフォルトの名無しさん (ワッチョイ 5eda-xrk/) mailto:sage [2023/05/07(日) 11:06:44.59 ID:AUxqabWy0.net]
>>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



442 名前:デフォルトの名無しさん (ワッチョイ 5eda-xrk/) mailto:sage [2023/05/07(日) 11:09:18.20 ID:AUxqabWy0.net]
ミス
最終的に
async foreach( var row in query.AsNoTracking().AsAsyncEnumerable() )
という書き方に落ち着きました

443 名前:デフォルトの名無しさん (ワッチョイ 4679-U4yn) mailto:sage [2023/05/07(日) 11:24:15.43 ID:4ZIcGn3M0.net]
終わるまでにめっちゃメモリ使って死ぬ感じある

444 名前:デフォルトの名無しさん (ワッチョイ 1279-y4C+) mailto:sage [2023/05/07(日) 14:06:12.41 ID:O0op5Uvp0.net]
Defenderやらが邪魔するのはそうなんだろうけど
C/C++でACLや属性変更でリトライなんてしてた覚えないからC#のDisposeでファイルがちゃんとクローズできてないだけな気もする

445 名前:デフォルトの名無しさん (ササクッテロリ Spc7-Z7Ea) mailto:sage [2023/05/08(月) 10:05:23.91 ID:3mw2N0vvp.net]
Disposeでクローズなんかしないだろ?
つかそんな実装頼みの使い方してたら痛い目に遭うぞ

446 名前:デフォルトの名無しさん (ワッチョイ b7e5-tcUg) mailto:sage [2023/05/08(月) 13:04:12.03 ID:h5IiweHd0.net]
using制御しかしてないわ

447 名前:デフォルトの名無しさん (スプッッ Sd52-8wHc) mailto:sage [2023/05/08(月) 13:11:33.93 ID:x7lJRSufd.net]
>>439-441
>>429はWidows Defenderのせいにして終わってるから
納得できる形で解決してみせてよ

448 名前:デフォルトの名無しさん (ササクッテロリ Spc7-Z7Ea) mailto:sage [2023/05/08(月) 13:27:23.81 ID:Rh3bbmbap.net]
>>442
非同期なら当たり前に発生するなw

449 名前:デフォルトの名無しさん (ラクッペペ MMde-yLVR) mailto:sage [2023/05/08(月) 13:29:30.54 ID:QcInbmeDM.net]
ファイルを閉じるから横取りされるんだぞ

450 名前:デフォルトの名無しさん (スッップ Sd32-KeI6) mailto:sage [2023/05/08(月) 13:38:05.76 ID:TxJAG0JMd.net]
今回みたいなケースでファイルクローズ直後にファイルいじろうとすると使用中の様な警告出ることあるから
基本的にリトライするようなコード入れてるけどそんなことないのかね

451 名前:デフォルトの名無しさん (ササクッテロリ Spc7-Z7Ea) mailto:sage [2023/05/08(月) 13:53:31.24 ID:xSxPowKip.net]
OS側の処理も非同期なんだと予想



452 名前:デフォルトの名無しさん (スプッッ Sd52-8wHc) mailto:sage [2023/05/08(月) 15:24:20.83 ID:NYRttg47d.net]
いちいちリトライなんか仕込んてたらハゲそう
イラネーヨって言ってくれ

453 名前:デフォルトの名無しさん (ワッチョイ c2bd-O5MS) mailto:sage [2023/05/08(月) 23:17:00.86 ID:n3psyKuA0.net]
>>440
IDisposableを継承しているのにクローズしなかったら使い物にならないだろ。

例えばFileStreamクラスのDispose()には、
Stream によって使用されているすべてのリソースを解放します。
とあるので、当然Closeもする。

454 名前:デフォルトの名無しさん (ワッチョイ c2bd-O5MS) mailto:sage [2023/05/08(月) 23:18:14.32 ID:n3psyKuA0.net]
あ、継承じゃなくて実装だ。

455 名前:デフォルトの名無しさん (ワッチョイ cb7c-DUGT) mailto:sage [2023/05/09(火) 04:40:15.34 ID:fisd8t0i0.net]
Disposeの処理の中でClose普通に呼んでたはず
ソース見りゃ分かるやろ

456 名前:448 (ワッチョイ c2bd-O5MS) mailto:sage [2023/05/09(火) 04:54:39.15 ID:b+hc+8Ui0.net]
>>450
>>440が「そんな実装頼みの」って言ったので、あえてソースを見ずにドキュメントの内容で答えた。

457 名前:デフォルトの名無しさん (アウグロ MMb3-G648) mailto:sage [2023/05/09(火) 07:21:46.18 ID:2h4Q3q9eM.net]
asyncawaitに対応してない何かがあるのかもな

458 名前:デフォルトの名無しさん mailto:sage [2023/05/09(火) 08:53:33.61 ID:F+qDabIr0.net]
自作じゃない.NET純正で、Taskを返す〇〇Asyncメソッドがasyncawait対応してないは無いでしょ

459 名前:デフォルトの名無しさん mailto:sage [2023/05/09(火) 10:25:27.81 ID:wTiHbcrZp.net]
だから、OSだって非同期にファイル処理してるんだろ?
で、完了通知なんて受けて無いw

460 名前:デフォルトの名無しさん mailto:sage [2023/05/09(火) 11:26:49.94 ID:TDrxScizd.net]
C#のファイル操作が遅いからファイルコピーと属性変更との間にWindowsDefebderが割り込んでスキャンされて妨害されるのかもしれない
知らんけど

461 名前:デフォルトの名無しさん mailto:sage [2023/05/09(火) 11:28:32.40 ID:LwvaBWbia.net]
>>455
win32apiを使ってるのでさすがにそれなはい
削除してもすぐにファイルが消えないのはあるあるだからリトライするのが定番



462 名前:デフォルトの名無しさん [2023/05/09(火) 11:46:04.35 ID:vAJE1vUCr.net]
とはいえ
頻度は10回に1回あるかないか程度
Windows Defender 無効にしたら例外が発生しなく
なら妥当かもしれない

463 名前:デフォルトの名無しさん mailto:sage [2023/05/09(火) 16:21:49.31 ID:GXFqLAgP0.net]
>>429
これ閉じる前にFileStream.SafeHandle使ってSetLastWriteTime(SafeFileHandle, DateTime)のオーバーロード使うのはどうなの?

464 名前:デフォルトの名無しさん mailto:sage [2023/05/09(火) 20:43:33.82 ID:ZCATFg/N0.net]
質問なんですが
formのbutton1.textをテキストボックスから取得したいのですが、
テキストが長い場合、ボタンのテキストが改行されてしまいます

表示が後半隠れてしまうのは別に構わないのですが、
改行がおこるとテキストがボタンの上側に移動してしまいます
button1.textを改行しないようにできないでしょうか?

465 名前:デフォルトの名無しさん mailto:sage [2023/05/09(火) 22:36:11.30 ID:ZhePtJGs0.net]
ボタンのPaintイベントで自前描画すればOK

466 名前:デフォルトの名無しさん (ワッチョイ 1279-y4C+) mailto:sage [2023/05/09(火) 22:41:53.48 ID:U2HEifZi0.net]
button1.AutoEllipsis = true;

467 名前:デフォルトの名無しさん (ブーイモ MMdb-mskx) mailto:sage [2023/05/10(水) 10:41:28.62 ID:B1N+exWkM.net]
どなたか教えてくださいC#です
public class Person
{
public Name Name { get; set; }
}
public class Name
{
public string NameText { get; set; }
}
こういうクラスがあったとして、

var p = new Person
{
Name = {},
};
Console.WriteLine(p.Name);
これはnullが出力されるんですが、構文解析時のName={}の右辺はどういう評価をされてるんでしょうか?
また
var p = new Person
{
Name = {NameText=""},
};
これもコンパイルは通りますが実行時にObject reference not set to an instance of an object.で落ちます
Name = {NameText=""},
の{NameText=""}は構文解析時にどういうモノとして扱われてるんでしょうか?
本来はName= new Name{NamText=...}とするところで、new {クラス名}を書き忘れたらビルドが通っていたのでなんだろうと思った所存です

468 名前:デフォルトの名無しさん (ワッチョイ b74f-hGOv) mailto:sage [2023/05/10(水) 11:20:13.56 ID:iQXLAALm0.net]
オブジェクト初期化子
1つ目のケースは初期化するプロパティがないので何もしない
2つ目のケースはこれと同じ意味になる
var p = new Person();
p.Name.NameText = "";

https://ufcpp.net/blog/2016/12/tipsobjectinitializer/

469 名前:デフォルトの名無しさん (ワッチョイ 52de-KeI6) mailto:sage [2023/05/10(水) 11:21:23.96 ID:tkTpg3dz0.net]
>>460
レスありがとう、Paintイベント追加で自力でやるのはけっこう大変そうですね

>>461
ありがとう、...省略はできたけど、文字は上側に寄ったままでした

button1.Padding.Topに4ぐらいいれたら解決しました

470 名前:デフォルトの名無しさん (ブーイモ MMdb-mskx) mailto:sage [2023/05/10(水) 11:27:39.61 ID:NYVeTygZM.net]
>>463
なるほど!ありがとうございます!
いやーこれはコンパイル時に落としてほしい…

471 名前:デフォルトの名無しさん (ワッチョイ ff2d-vOwS) mailto:sage [2023/05/10(水) 11:28:45.20 ID:qs6QvCEc0.net]
Formsで独自描画はバッドノウハウに近いと思う 
スケーリング考慮してないのばっかり



472 名前:デフォルトの名無しさん (ワッチョイ b74f-hGOv) mailto:sage [2023/05/10(水) 13:49:34.03 ID:iQXLAALm0.net]
>>465
AのコンストラクタでNameがnewされてたら問題ないわけだし使い分けでしかないね
nullableを有効化しとけばこのケースだとAのNameがnull許容でもnull非許容でも警告出してくれるよ

473 名前:デフォルトの名無しさん (ワッチョイ c23d-Lyct) [2023/05/10(水) 14:23:44.58 ID:6sAnxqBz0.net]
C#でASP.NETでHTMLコード書くにはどこいじればいいの?

474 名前:429 (ワッチョイ 9354-ouLR) [2023/05/10(水) 17:05:27.60 ID:QPN4FwhI0.net]
私にとっての解決後も議論があったようですが、
Windows Defender を無効化 ( Windows Defender の [除外] に、コピー先フォルダを登録する ) してから、1回も発生していません。
for(int i = 0; i < 100; i++){}
での 100回ループテストを何度か行っても発生していないので、自分の中では解決済みになっています。

475 名前:デフォルトの名無しさん (ササクッテロル Spc7-Z7Ea) mailto:sage [2023/05/10(水) 18:11:17.94 ID:rAs2Y7NDp.net]
ファイル内容変更したからウイルスチェックが走ってんじゃん
ってオチかよw

476 名前:デフォルトの名無しさん (ワッチョイ 1610-tcUg) mailto:sage [2023/05/10(水) 18:54:24.51 ID:6aE3wdSe0.net]
オチかよも何も、最初からそういう話だったのに
DisposeがちゃんとやってないんだろとかOSの遅延がうんたらとか頭でっかちが騒いでるだけやで

477 名前:デフォルトの名無しさん (ワッチョイ 4679-jUDw) mailto:sage [2023/05/10(水) 18:59:46.60 ID:KHK6MiQv0.net]
asyncawaitってスレッドセーフのメソッドじゃなくても使っていんだっけ?

478 名前:デフォルトの名無しさん (アウアウウー Sac3-16n5) mailto:sage [2023/05/10(水) 19:16:24.65 ID:PlKEk/pSa.net]
>>456で結論書いてやったのにまだやってたのか

479 名前:デフォルトの名無しさん (ササクッテロル Spc7-Z7Ea) mailto:sage [2023/05/10(水) 19:57:37.80 ID:n33wvc2tp.net]
>>473
全く結論になって無いよあれ
単なる対症療法なだけだろw

480 名前:デフォルトの名無しさん (アウアウウー Sac3-16n5) mailto:sage [2023/05/10(水) 20:01:05.91 ID:PlKEk/pSa.net]
その対症療法が唯一の治療法なんだがまだそれもわからないのかよw

481 名前:デフォルトの名無しさん (アウアウウー Sac3-16n5) mailto:sage [2023/05/10(水) 20:03:31.18 ID:PlKEk/pSa.net]
リソースを占有できるのがそのスレッドだけではない場合
つまり今回と同様の場合だな
原因がセキュリティソフトかバックアップソフトか何かは全く関係ない
時間を置いて何度かリトライしてそれでもだめなら例外を投げる
基本中の基本だぞ?



482 名前:429 (ワッチョイ 9354-ouLR) mailto:sage [2023/05/10(水) 20:19:03.60 ID:QPN4FwhI0.net]
議論再燃させて申しわけありません。
消えます。

483 名前:デフォルトの名無しさん (ワッチョイ 4679-jUDw) mailto:sage [2023/05/10(水) 21:49:28.98 ID:KHK6MiQv0.net]
みんな参加できるし
いい内容だと思う

484 名前:デフォルトの名無しさん (ワッチョイ 1610-tcUg) mailto:sage [2023/05/10(水) 22:26:34.42 ID:6aE3wdSe0.net]
>>1
> 議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。

485 名前:デフォルトの名無しさん (ワッチョイ ff2d-vOwS) mailto:sage [2023/05/10(水) 23:13:27.93 ID:qs6QvCEc0.net]
>>475,476
今回の場合(>>429)は、ファイルを一旦解放するのが問題なんだから、>>458の方法で上手く行くでしょ

486 名前:デフォルトの名無しさん (ワッチョイ ff2d-vOwS) mailto:sage [2023/05/10(水) 23:27:09.51 ID:qs6QvCEc0.net]
ファイル削除のことならリトライは必要だけど、今回のと関係ないね

487 名前:デフォルトの名無しさん (ワッチョイ 335f-Z7Ea) mailto:sage [2023/05/10(水) 23:39:29.79 ID:+U2L2taI0.net]
てか、ファイル操作するのに、排他しなきゃだよな?
一度手放したら他のプロセスに横取りされちゃうだろ

488 名前:デフォルトの名無しさん (ワッチョイ 335f-LLT0) mailto:sage [2023/05/10(水) 23:54:07.74 ID:of34847N0.net]
もう一度再現させた上でロックしているプロセスが本当にWindows Defenderだったのか確認しない限り不毛な議論では?

489 名前:デフォルトの名無しさん (ワッチョイ 4679-U4yn) mailto:sage [2023/05/11(木) 02:59:54.64 ID:YOUU3VFS0.net]
っていうかどうしたいんだろ
コピー後のファイルを
誰かがつかんだままにすれば
似たようなエラーはいつでも
起こせるし起きちゃうじゃん

それがこのアプリにとってレアケースでないなら他アプリがつかんだママのときの動作を仕様で定義するべきだと思う

490 名前:デフォルトの名無しさん (ワッチョイ ff2d-vOwS) mailto:sage [2023/05/11(木) 03:21:28.69 ID:rPH4vL1P0.net]
>>484
>>429のソースを見るに、ファイルの最終書き込み時刻を保ったままコピーしたいんでしょうよ

コピー先のファイル作成とタイムスタンプ操作を1回の排他モードオープン〜クローズの間にまとめてやれば
他のプロセスに割り込まれようが無いし、その後につかまれてもやること終わってるから問題無い

491 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 08:30:37.64 ID:deoSAjL+a.net]
>>481
今回のセキュリティーソフトわ切るやり方こそ対症療法だろw



492 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 10:12:30.60 ID:NldGOlLod.net]
>>458
これ知らなかったんだけど、実際に存在する?
コード書いてもでてこないんだけど
ちなみにGetLastWriteTime はあるようだ

493 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 10:37:35.73 ID:rPH4vL1P0.net]
>>487
.NET7で追加された
.NET6以前はP/InvokeでWin32API使えば同等のことは出来るけど時刻の扱いが面倒臭いね

494 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 10:44:53.88 ID:ihHVpLbGp.net]
そもそもファイルのタイムスタンプを合わせる仕様が本当に必要なのか小一時間

495 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 10:54:15.13 ID:NldGOlLod.net]
>>488
thx
>>489
他人の仕様にケチ付けちゃだめ

496 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 11:24:35.10 ID:ihHVpLbGp.net]
タイムスタンプなんて危ういものを何に使おうってんだ?
生成時刻が重要ならファイル名に組み合わせしまうとか
他の方法の方がよっぽど確実だぞ

497 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 12:16:13.48 ID:RpUziWGf0.net]
DateTime.ToFileTimeみたいな関数あったはずだからWin32利用したら案外簡単

498 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 12:31:50.44 ID:NldGOlLod.net]
コードも提供せずにこういうことやりたいと言ってるわけでもないし、
今回問題となっている部分についてだけで話すればいいんじゃないの
質問者が他のやり方ないですかみたいな質問ならまだしも
回答者が勝手に仕様かえて変な回答しないほうがいいと思うなぁ

499 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 12:45:05.52 ID:OsVl9AaP0.net]
俺は基本更新時刻の新しい順で並べるからファイルやフォルダのコピーごときでファイルスタンプは変わって欲しくないな

500 名前:デフォルトの名無しさん [2023/05/11(木) 12:56:38.62 ID:CPAv1ED5M.net]
コピー元のタイムスタンプを維持したいユースケースなんていくらでもあると思うんだけどな
cp -pのように最初からそういうオプションが用意されてないのが不思議なくらい

501 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 13:00:19.05 ID:8tWYoMH60.net]
>>491
お前の考えなど知らん
コピー先のファイル名はそのままである必要があるんだよ



502 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 13:03:05.25 ID:azf3P6SKM.net]
あれ、File.Copy()でコピーすればファイルの更新時刻とかはコピー元ファイルのままだと思ってたんだけど、違うの?
わざわ

503 名前:エLastWriteTimeを転記する処理なんか不要じゃないかな []
[ここ壊れてます]

504 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 13:20:41.79 ID:YOUU3VFS0.net]
結局なんで死んでんだっけ?
スレッドセーフじゃないメソッド呼んでたから?

505 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 13:22:58.00 ID:Kl8HQqiW0.net]
FileStreamを開放したところでDefenderに掴まれてるから

506 名前:デフォルトの名無しさん [2023/05/11(木) 13:26:07.70 ID:IsUfqIsW0.net]
>>470
ノートン先生が毎回俺がコンパイルしたexe没収しやがるのな

507 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 13:28:13.33 ID:/kketneYM.net]
gdriveの横槍でvsのビルド失敗しやがるからな

508 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 14:04:15.95 ID:/lX/zRJGp.net]
>>496
だからファイル作成時刻が重要ならタイムスタンプに頼る様な仕様は事故のもとだから仕様から考え直さないと後で泣くのはおまえさんとこだって話だw

509 名前:デフォルトの名無しさん [2023/05/11(木) 14:06:17.73 ID:IsUfqIsW0.net]
ファイルの作成時刻が大事で、ファイル名も変えたくないなら
実データの内に時刻もっておいて逐次参照するしかないか

510 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 14:15:18.91 ID:5HC1/c5B0.net]
タイムスタンプをバージョン番号にするのが一時流行ったな

511 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 14:18:46.36 ID:NldGOlLod.net]
>>497
コード提供部分にはない仕様でコピー中の進捗管理もしたいからブロックコピーみたいな事したいんじゃないのと思ってるけどね



512 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 16:32:36.54 ID:Kl8HQqiW0.net]
ファイルコピーツールでタイムスタンプ類もそのままって普通のことでは?

513 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 16:59:27.45 ID:OsVl9AaP0.net]
そうだよ
その当然のことがC#だとなぜか上手くいかないねってマヌケな話を続けてるのよ

514 名前:デフォルトの名無しさん (ワッチョイ b7e5-tcUg) mailto:sage [2023/05/11(木) 17:30:13.71 ID:Kl8HQqiW0.net]
違うよ、Defenderに割り込まれて失敗してただけなのに、C#が悪いとか実装だよりがうんたらとか明後日の話してるだけ
あとなぜかタイムスタンプ同期を敵視するおかしな輩

515 名前:デフォルトの名無しさん (ササクッテロル Spc7-Z7Ea) mailto:sage [2023/05/11(木) 17:43:23.58 ID:rQf2HOBdp.net]
タイムスタンプって言えば、マイナンバーの他人データ事件

516 名前:デフォルトの名無しさん (アウアウエー Saaa-tcUg) [2023/05/11(木) 20:37:45.66 ID:WmrOv4hCa.net]
asp.net 7.0/razorでTest.razorファイルを作って中身を
@page "/test/{text}"
<h1>Hello, world!</h1>
とすると、localhost/test/aaaaaaaは期待通りTest.razorにアクセスするんだけど
localhost/test/ にアクセスしようとするとエラーページ(app.razorの<NotFound>)に飛んでしまいます
エラーページに飛ばずにTest.razorに導くにはどうしたらいいのでし

517 名前:デフォルトの名無しさん (アウアウエー Saaa-tcUg) mailto:sage [2023/05/11(木) 20:50:19.55 ID:WmrOv4hCa.net]
自決。重複指定できるんだね
@page "/test/{text}"
@page "/test/"

518 名前:デフォルトの名無しさん (ワッチョイ 4679-jUDw) mailto:sage [2023/05/12(金) 05:08:25.71 ID:wvdezX0Z0.net]
ループしつつ例外来たらリトライぐらいしかないんだな
ファイルアクセスって

519 名前:デフォルトの名無しさん (ワッチョイ 1610-tcUg) mailto:sage [2023/05/12(金) 06:06:11.81 ID:knxa7qRm0.net]
絶対に他のプロセスがアクセスすることが無いファイルでもなきゃそうだろうね

520 名前:デフォルトの名無しさん mailto:sage [2023/05/12(金) 10:06:17.76 ID:6p7rgQrNp.net]
一度握ったら離さない様にすれば良いだけ
まあ、握るまで待つ事はあるだろうけどさ

521 名前:デフォルトの名無しさん mailto:sage [2023/05/12(金) 10:09:45.59 ID:6p7rgQrNp.net]
ファイルロックくらいしろって事でFA



522 名前:デフォルトの名無しさん (ワッチョイ 5eda-xrk/) mailto:sage [2023/05/12(金) 20:52:48.39 ID:QyvjIFa10.net]
タイムリーな話題

Microsoft Defender がファイルコピー速度を大幅に低下させるというテスト結果
https://security.srad.jp/story/23/05/11/212256/

523 名前:デフォルトの名無しさん (ワッチョイ cfa7-55dJ) mailto:sage [2023/05/13(土) 11:11:48.89 ID:tW4K4KGI0.net]
当たり前の話じゃないの?
アンチウイルスって実行ファイルの中身チェックするのが仕事なんだし






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<265KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef