سؤال

لدي تطبيق بسيط باستخدام FileSystemWatcher يعمل كخدمة Windows. يتم حفظ الملفات إلى الدليل عبر ماكرو Excel VB مع

ActiveWorkbook.SaveAs Filename:= "pathToSaveTo"

عند إنشاء ملف جديد، يستدعي المراقب طريقة لمعالجة الملف

void watcher_FileCreated(object sender, FileSystemEventArgs e)
    {
        while (true)
        {
            if (FileUploadComplete(e.FullPath))
            {
                this.ProcessOneFile(e.FullPath, e.Name);
                break;
            }
        }
    }

لا يسجل تطبيق Watcher حدثا عند حدوث ذلك ولكن يؤدي ذلك يدويا وإعادة إدخال الملفات إلى المجلد إلى رفع الحدث.

هل يعرف أي شخص كيف يمكنني الحصول على السلوك المتوقع عند حفظ ملف في الدليل؟

هل كانت مفيدة؟

المحلول

مجرد طلقة في الظلام، وربما تنفيذ "Saveas" يقوم بعمل غريب مثل كتابة البيانات إلى ملف TEMP ثم "نقل" في الدليل النهائي، مما قد ينطلق كحدث "إعادة تسميته" أو "تغيير" في حين أن.

إذا لم تكن قد قمت بذلك بالفعل، فحاول التسجيل لهذه الأحداث الأخرى ومعرفة ما إذا كانوا يطلقون النار على "Saveas" ربما؟

نصائح أخرى

إذا كان الملف موجودا بالفعل ويجري الكتابة فيه، فلن تحصل على حدث تم إنشاؤه. حاول ربط الحدث الذي تم تغييره أيضا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top