問題タブ [file-in-use]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ファイルが実行可能実行の他のインスタンスによって使用されているかどうかを確認する
詳細に入る前に、私のプログラムは C# .Net 4.0 を使用して Visual Studio 2010 で作成されています。
実行ごとに個別のログ ファイルを生成するプログラムを作成しました。ログ ファイルの名前は時間にちなんで付けられ、ミリ秒単位まで正確です (たとえば、20130726103042375.log )。プログラムは、その日のマスター ログ ファイルが存在しない場合は、それも生成します (たとえば、*20130726_Master.log*)。
各実行の最後に、ログ ファイルをマスター ログ ファイルに追加したいと考えています。正常に追加できるかどうかを確認する方法はありますか? そしてSleep
、1秒か何か後に再試行しますか?
基本的に、1 つの実行可能ファイルと複数のユーザー (5 人のユーザーがいるとしましょう) があります。
5 人のユーザー全員が同時にこの実行可能ファイルにアクセスして実行します。すべてのユーザーがまったく同じ時間 (ミリ秒まで) に開始することはほぼ不可能であるため、個々のログ ファイルを生成しても問題はありません。
ただし、これらのログ ファイルをマスター ログ ファイルにマージしようとすると、問題が発生します。可能性は低いですが、複数のユーザーが同じマスター ログ ファイルに追加すると、プログラムがクラッシュすると思います。
私が使用する方法は
オブジェクトにチェックインしましたlock
が、1 つのインスタンスで複数のスレッドではなく複数のインスタンスが実行されているため、私の場合は機能しないと思います。
私が調べる別の方法はtry/catch
、このようなものです
しかし、masterLogFile のステータスはその短いミリ秒で変化する可能性があるため、これで問題が解決するとは思いません。
したがって、私の全体的な質問は次のとおりです。masterLogFile が使用されていない場合に追加し、使用されている場合は短いタイムアウト後に再試行する方法はありますか? または、masterLogFile を作成する別の方法がある場合は?
よろしくお願いします。長いメッセージで申し訳ありません。誰の時間も無駄にしないように、自分のメッセージを確実に伝え、自分が試したことや調査したことを説明したいと思います。
あなたを助けるために私が提供できる情報が他にある場合はお知らせください。
pascal - Lazarus: ファイルが使用中かどうかを確認するには?
ファイルにアクセスする前に、ファイルが使用中かどうかを確認する必要があります。Lazarus環境でそれを行う方法はありますか?
c# - localhost ではなくサーバーを使用してファイルをアップロードすると、File in use by another process エラーが発生する
私は MVC と .NET にかなり慣れていませんが、3 日間立ち往生している最初の問題に遭遇しました。長い投稿をお詫び申し上げます。
私が取り組んでいるプロジェクトの一部では、アプリケーションがデータをインポートできるように、ユーザーが XLS または XLSX ファイルを選択してアップロードできる必要があります。アップロードされるファイルには、20,000 行以上のデータが含まれる可能性があります。
5000、10000、および 20000 行のテスト ファイルがあります。(Visual Studio 2010 を使用して) ローカル コンピューターでアプリを実行すると、これらのファイルはすべてネットワーク共有に保存され、正常に処理されます。エラーなし。ただし、アプリを開発サーバーにデプロイすると、5 分後に、別のプロセスで使用されているため、10k および 20k ファイルにアクセスできないというエラーが表示されます。
エラー メッセージ: 別のプロセスで使用されているため、プロセスはファイルにアクセスできません。
スタックトレース:
10000 行のファイルのサイズは 304 KB で、web.config で次のように長さ制限を設定しています。
5 分ほど特別なことは何も見つかりませんが、アップロードを開始してから 5 分後には常にエラーが返されます。
Chrome と IE で試してみました。どちらも localhost 経由で動作し、dotnet アプリ サーバー経由では動作しません。
スタック トレースは、SaveAs() メソッドで爆発していると言っていますが、ネットワーク共有の場所にファイルがあり、サイズが一致していることがわかります。
ファイルを保存したら、それを読み取ってデータを新しいビューに戻す必要があります。ビューにデータを返す前に、かなりの量の処理が行われています。ここで 5 分以上待つことが予想されます。ファイルの読み取りが完了したら、接続を閉じてネットワーク共有からファイルを削除します。私も例外を受け取った直後にファイルが削除されます。各アップロードを開始するときにファイルが存在しません。
このアプリケーションはまだ開発中であるため、現在このアプリケーションを使用しているのは私だけです。私がテストを行っている間、他の誰かがネットワーク共有に保存されたコピーにアクセスしているとは思えません。この問題は一貫して再現できますが、なぜ発生するのかわかりません。
誰かがこのようなものを見たことがありますか、それとも私に何か提案がありますか? アプリサーバーのどこかに設定があると思いますが、特定できませんでした。
ありがとう!
編集:
ファイルのアップロードを処理するコードは次のとおりです。
SaveAs() を実行するときに 1 回、次に Delete を実行するときに同じエラーがログに記録されます。奇妙なことに、ファイルは消えてしまいます。アプリサーバーには、このプロセス中に何かをしようとしている別のスレッドがあり、ローカルホストでは発生しないようです。
編集
executionTimeout 値を変更した後、Chrome が 5 分後に「アップロード中 79%...」と表示し、ネットワーク共有でファイルが消えて再び表示され、1、2 分後に Chrome がそのページを表示したことに気付きました。 「エラーコード: ERR_INVALID_RESPONSE」で利用できませんでした。ファイルはまだネットワーク共有から削除されていません。IE では、5 分後にもう一度アプリにログインするように求められます。
vb.net - VB - StreamWriter を使用したファイルへの書き込み
StreamWriter を使用してファイルに書き込もうとしています。
デバッグ モードでコードを停止したところ、コードがクラッシュし、2 行目に達するとすぐに例外が発生することがわかりました。
ファイルを作成したばかりで、まだ使用中だからですか?どうすればそれを回避できますか?
file-io - ファイル(実際にはシリアルポート)が開かずに開くことができるかどうかを判断するPOSIXの方法はありますか?
さまざまな POSIX 準拠システムで USB シリアル ポートとして表示できるデバイスを作成します。私は、発信者が現在利用可能な (つまり、使用されていない、適切な権限を持っているなどの) デバイスのすべてのインスタンスのリストを取得できるようにする API をサポートしています。発信者は、使用中のデバイスも示されているリストを取得することもできます。
もちろん、これを行う簡単な方法は、各候補のシリアルポートを開閉して、どれが開くことができるかを確認することです。このAPIを使用する複数のアプリケーション(アプリのライブラリ/ dylib)が競合状態を作成する可能性があるため、これを行わないことをお勧めします。両方が同じシリアルポートを同時にクエリしようとすると、1つのアプリデバイスが使用されていたと誤って考えます。
だから私が必要としているのは、実際にポートを開かなくても、ポートが開くことができることを知る方法です。ポートが使用中であることを示すために作成された特別なファイルがあるロックファイルスキームを使用する他の人を見てきました-ファイルが存在しない場合、ポートが使用可能であるという前提があります。私の問題は、私のライブラリ以外のポートの他のユーザーがスキームなどを遵守していない可能性があるため、それに依存できないことです。
実際にファイルを開こうとせずに、この点でファイルのステータスを照会できる低レベルの POSIX 機能はおそらくありますか?
database - テーブルが別のフォームで使用された後、テーブルからのデータをグリッドに入力すると、「使用中のファイル」エラーが発生する
私は VFP の学習の初心者で、問題に直面しています。
私は2つのフォームを持っています:
- ユーザーとパスワードを記入するログインフォーム。これらの値は、データベースからテーブルで検索されます。
- users テーブルの日付を含むグリッドを含む別のフォーム。グリッドで選択したユーザーのパスワードを変更するためにこれを使用します。
問題は、「ファイルが使用中です」というエラーを受け取り続けるため、テーブル「ユーザー」からのデータをグリッドに入力できないことです。データのRecordSourceをテーブル、SQLステートメント、およびエイリアスに設定しましたが、まだ何も設定していません。グリッドをリストとコンボボックスに置き換えようとしましたが、それでもエラーが発生します。
助けてください !:) ありがとうございました
linux - Virtual Box (Windows 7) で「ビジー ファイル」Linux VM を変更する
シェル スクリプトを使用して ace/ext-modelist.js を変更しようとしています。コードは次のとおりです。
ace/ext-modelist.js
問題は、変更しようとすると、ファイルをスキップしてファイルがビジーであるというエラーが表示される場合を除いて、これがすべて機能することです。
Mac と Linux では正常に動作するため、Windows で VM を実行する際の問題であることはわかっています。dos2unix を介してすべてのファイルを実行したので、エラーはシェル スクリプト自体ではなく、おそらくコマンドですか?
編集:
bash -x で実行してログファイルに出力すると、次のエラーが表示されます。