特定のタイプのいくつかのファイルのフォルダーを確認し、それらを配列に追加し、それらを1つずつ印刷して削除する必要があります。プロセス中に新しいファイルが追加されると、印刷キューに追加されます。ファイルが1秒ごとに作成されるかどうかを監視しようとしています。これを行うために、タイマー付きの FileSystemWatcher を使用しています。2 つのイベント関数をバインドしようとしていますが、試行時に奇妙なエラーが発生します。私はフォームアプリケーションでこれを行っています.今日初めてこれらの2つの名前空間を見ました.マルチスレッド、バックグラウンドスレッド、またはSystem.Threading.TimerとSystem.Windows.Forms.Timerの違いについて何も知りません.この特定の状況に最適なので、問題がこれらの主題に限定されすぎる場合は、これについても簡単に説明する必要があるかもしれません.
基本的にコードはこれです(これはより大きなプログラムの一部なので、問題に関連するコードだけを貼り付けようとします。また、プロジェクト全体の一部である余分な using 名前空間を気にしないでください。最後に私はしませんここのコードブロックで C# 構文を強調表示する方法を知っており、ctrl+K を使用した書式設定ツールが、次のコード ブロックで読んでいる内容を構成しています。読みやすくするために、少しインデントしてみました。):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;
using System.IO.Ports;
using System.Diagnostics;
private Timer timer1; //Windows.Form Timer
private void button1_Click(object sender, EventArgs e) {
try {
InitTimer();
FileSystemWatcher SysWatch = new FileSystemWatcher(FilesPath, "*.*");
SysWatch.Created += new FileSystemEventHandler(SysWatch_Created);
SysWatch.EnableRaisingEvents = true;
}
catch (Exception exc) {
MessageBox.Show(exc.Message);
}
}
private void InitTimer() {
timer1 = new Timer();
timer1.Tick+=new EventHandler(timer1_Tick);
timer1.Interval = 2000;
timer1.Start();
}
private void timer1_tick (object sender, EventArgs xz) {
void SysWatch_Created(object Sender, FileSystemEventArgs w) {
MessageBox.Show("File " + w.FullPath + "Creato");
}
}
私がやろうとしていたのは、タイマー内にファイル作成イベントコントローラーをネストして、ファイル作成をチェックすることですが、おそらく私がやっている方法に問題があります。
私はこの種のものを手に入れました(SysWatch_Createdをtimer1_Tickにネストしようとしたとき、それまではすべてが完璧に機能していました)。
Event Args などで 2 つのメソッドをネストしようとしているという事実と関係があると思います...わかりません
それをより良くする方法の例は大歓迎です。
皆さんありがとう。