ফাইল পরিবর্তনের জন্য ফাইলসিস্টেমওয়াটার বনাম পোলিং দেখুন


152

আমাকে একটি অ্যাপ্লিকেশন সেটআপ করতে হবে যা স্থানীয়ভাবে বা নেটওয়ার্ক ড্রাইভে উভয়ই ডিরেক্টরিতে ফাইল তৈরির জন্য নজর রাখে।

চান FileSystemWatcherবা একটি টাইমার উপর পোলিং সবচেয়ে ভাল বিকল্প হতে পারে। আমি অতীতে দুটি পদ্ধতি ব্যবহার করেছি, তবে ব্যাপকভাবে নয়।

উভয় পদ্ধতিতে কোন সমস্যাগুলি (পারফরম্যান্স, নির্ভরযোগ্যতা ইত্যাদি) রয়েছে?


3
ফাইলসিস্টেমওয়াটার একটি ফাঁসী বিমূর্ততা এবং সবচেয়ে মৌলিক ক্ষেত্রে ব্যতীত অন্য কোনও কিছুর জন্য নির্ভর করা যায় না। এখানে দেখুন: stackoverflow.com/a/22768610/129130
স্টেইন Åsmul

1
ফাইলসিস্টেমওয়াটারের নির্ভরযোগ্যতার বিষয়ে রেমন্ড চেন (মাইক্রোসফ্ট বিশেষজ্ঞ) দ্বারা এই উত্তরের রেফারেন্সের জন্য একটি লিঙ্ক যুক্ত করতে চান । এবং তার ব্লগ: ওল্ড নিউ থিং (উদাহরণস্বরূপ ফাইলসিস্টেমওয়াটারের জন্য অনুসন্ধান করুন)।
স্টেইন এসমুল

উত্তর:


105

আমি ফাইল সিস্টেমের প্রহরীকে উত্পাদন এবং পরীক্ষার পরিবেশে ব্যর্থ হতে দেখেছি। আমি এখন এটিকে একটি সুবিধা হিসাবে বিবেচনা করি তবে আমি এটি নির্ভরযোগ্য মনে করি না। আমার প্যাটার্নটি ফাইল সিস্টেমের প্রহরীগুলির সাথে পরিবর্তনের জন্য নজর রাখা হয়েছে, তবে হারিয়ে যাওয়া ফাইলের পরিবর্তনগুলি ধরতে মাঝে মধ্যে পোল করুন।

সম্পাদনা: আপনার যদি ইউআই থাকে তবে আপনি আপনার ব্যবহারকারীকে ভোট দেওয়ার পরিবর্তে পরিবর্তনের জন্য "রিফ্রেশ" করার ক্ষমতাও দিতে পারেন। আমি এটি ফাইল সিস্টেমের প্রহরীগুলির সাথে একত্রিত করব।


11
আমি যদি পড়ে যাই তবেও দেখেছি। আমরা যে সমাধানটি ব্যবহার করেছি তা হ'ল আমাদের নিজস্ব ক্লাসটি গুটিয়ে রাখা, যেখানে র্যাপার ক্লাস ALSO এমন একটি টাইমার ব্যবহার করে যাতে পর্যবেক্ষক এখনও চলছে occasion
জোয়েল কোহর্ন 14

আমরা অনুরূপ কিছু করি - একবার ফাইলক্রিয়েটেড ইভেন্টে পাস করা ফাইলটি প্রক্রিয়া করার পরে, আমরা ফিরে আসার আগে অন্য কোনও নতুন ফাইলের জন্য ম্যানুয়াল চেক করি। এটি একবারে প্রচুর ফাইল আসার সাথে যে কোনও সমস্যা হ্রাস পাচ্ছে বলে মনে হচ্ছে।
জন সাবলীল

4
আমি বিশ্বাস করি যে আমরা এটি একটি এক্সপ্লোর পরিচালনা ডিরেক্টরি এবং একটি ফাইল শেয়ারে এক্সপি এবং সার্ভার 2003-এ পরীক্ষা করেছিলাম এবং ফিল্ডে এক্সপি মেশিন ছিল। স্থানীয় দির এবং ফাইল ভাগ উভয় ক্ষেত্রেই আমাদের সমস্যা ছিল। আমরা যে সম্ভাব্য কারণগুলি নিয়ে এসেছি তার মধ্যে একটি হ'ল ডিরেক্টরিতে অল্প সময়ের মধ্যে প্রচুর ফাইলের অনুলিপি / তৈরি করা।
জেসন জ্যাকসন

5
"আমি একদিন একটি ভূত দেখেছি" - এটিকে বর্ণনা করার পক্ষে এটি খুব গঠনমূলক বা পেশাগত নয়। মনে হচ্ছে যে থ্রেডের লোকেরা, নন-পৃষ্ঠা-বহনযোগ্য বাফার ওভারআরুনগুলি সম্পর্কে এমএসডিএন ডকুমেন্ট উল্লেখ করে আপনার সমস্যাগুলি ব্যাখ্যা করতে পারে। আপনি ব্রেন্টের পদ্ধতির ব্যবহার করার চেষ্টা করেছেন?
v.oddou

4
আমি কেবলমাত্র অ্যামাজনে একটি গ্যাস সেন্সর কিনেছিলাম এবং এটি আমাকে অবাক করে দিয়েছিল যে কত লোক বলেছিল এটি কাজ করে না, যখন তারা স্পষ্টতই এটি সঠিকভাবে ক্যালিব্রেট করে না বা এমনকি ক্রমাঙ্কণের সম্পর্কেও জানত না ... ফাইলসিস্টেমওয়াটারের উচ্চ ট্র্যাফিকের সীমাবদ্ধতাগুলি জানা ছিল এর বাফার আকার। প্রায় গ্যারান্টিযুক্ত এটি "ব্যর্থ" হওয়ার কারণ। এটি ডকুমেন্টেশনে সহজেই ব্যাখ্যা করা হয়েছে এবং এমন অনেকগুলি কাজ রয়েছে যা খুব নির্ভরযোগ্য অপারেশন সরবরাহ করে (নীচে পোস্ট করা হয়েছে)। এটি কেবল "ভুল" বলা ভাল উত্তর নয়, একসময় এমন কিছু কার্যকর হয়নি যে কেন তা নিশ্চিত নয় ... কারও উপর নির্ভর করা উচিত নয় "।
u8it

60

বাফার পূর্ণ হয়ে যাওয়ার পরে আমার সবচেয়ে বড় সমস্যাটি ছিল ফাইলগুলি হারিয়ে যাওয়া। পাই ঠিক করার মতো সহজ - কেবল বাফার বাড়ান। মনে রাখবেন যে এতে ফাইলের নাম এবং ইভেন্ট রয়েছে, সুতরাং এটি ফাইলের প্রত্যাশিত পরিমাণে (ট্রায়াল এবং ত্রুটি) বাড়ান। এটি মেমরি ব্যবহার করে যা পৃষ্ঠায় আউট করা যায় না, সুতরাং স্মৃতিশক্তি কম হয়ে গেলে এটি অন্য প্রক্রিয়াগুলিকে পৃষ্ঠায় বাধ্য করতে পারে।

এখানে বাফার সম্পর্কিত এমএসডিএন নিবন্ধটি রয়েছে: ফাইলসিস্টেমওয়াটার .. ::। অভ্যন্তরীণ বাফারসাইজ সম্পত্তি

প্রতি এমএসডিএন:

বাফারের আকার বৃদ্ধি করা ব্যয়বহুল, কারণ এটি পৃষ্ঠাবিহীন মেমরি থেকে আসে যা ডিস্কে সরিয়ে নেওয়া যায় না, তাই বাফারটিকে যতটা সম্ভব ছোট রাখুন। বাফার ওভারফ্লো এড়াতে, অযাচিত পরিবর্তন বিজ্ঞপ্তিগুলি ফিল্টার করার জন্য নোটিফাইফিল্টার এবং ইনক্লুডসুবডাইরেক্টরি বৈশিষ্ট্যগুলি ব্যবহার করুন।

একসময় বড় ব্যাচের প্রত্যাশার কারণে আমরা 16 এমবি ব্যবহার করি। ভাল কাজ করে এবং কখনও কোনও ফাইল মিস করে না।

আমরা একটি ফাইল প্রক্রিয়া শুরু করার আগে সমস্ত ফাইলও পড়ি ... ফাইলের নামগুলি নিরাপদে ক্যাশে করে ফেলুন (আমাদের ক্ষেত্রে, একটি ডাটাবেস সারণিতে) তারপরে তাদের প্রক্রিয়া করুন।

ফাইল লকিংয়ের সমস্যার জন্য আমি এমন একটি প্রক্রিয়া তৈরি করেছি যা ফাইলটি এক সেকেন্ড অপেক্ষা করে আনলক হওয়ার জন্য অপেক্ষা করে, তারপরে দুটি, তারপরে চারটি, এবং সেটার। আমরা কখনই জরিপ করি না । এটি প্রায় দুই বছর ধরে ত্রুটি ছাড়াই উত্পাদনে রয়েছে।


12
বাফার ওভারফ্লো? ওহ, আপনি স্ট্যাক ওভারফ্লো বলতে চাইছেন।
TheFlash

1
নেট 3.5 হিসাবে: "আপনি বাফারটি 4 কেবি বা তার চেয়ে বড়তে সেট করতে পারেন তবে এটি 64 কেবি ছাড়িয়ে যাবে না"
ব্র্যাড

9
যদি ফাইলসিস্টেমওয়াটারের সর্বোচ্চ অভ্যন্তরীণ বাফারটি 64 কেবি হয় তবে আপনি কীভাবে 16 এমবি ব্যবহার করছেন?
বিকে

1
@ জার্ভিস, একটি বাফার একটি ধীরে ধীরে স্টোরেজ লোকেশন তথ্য সংরক্ষণের জন্য কনফিগার করা থাকে যতক্ষণ না এটি প্রক্রিয়াকরণ হওয়া অবধি সঞ্চারিত হয়, এর অর্থ সাধারণত একটি ফিফো বা সারি থাকে কারণ আপনি অনুরোধগুলি ডিল করতে চান তবে তারা প্রোগ্রামগুলিতে পুনরায় সংক্রমণের মতো কিছু প্রক্রিয়াগুলিতে আসে একটি ফিলো বা স্ট্যাক কাঠামো যা ব্যবহার করা হয়, এক্ষেত্রে আমরা অবশ্যই ইভেন্টের সারি বাফারকে উল্লেখ করছি এবং প্রোগ্রামগুলি স্ট্যাক বাফারকে নয়
মাইকটি

1
petermeinl.wordpress.com/2015/05/18/tamed-files সিস্টেমেওয়্যাচার এই পোস্টটি বাস্তব-বিশ্বের অ্যাপ্লিকেশনগুলিতে ফাইল সিস্টেমটি নিরীক্ষণ করার জন্য সাধারণত স্ট্যান্ডার্ড ফাইলসিস্টেমওয়াটার (এফএসডাব্লু) ফিক্সিংয়ের সমস্যাগুলির সমাধান করে যা সাধারণত দেখা দেয় shares
কিকিনেট

35

FileSystemWatcherএছাড়াও, ব্যস্ত সময়ের পরিবর্তন মিস্ হতে পারে সারিবদ্ধ পরিবর্তনের নম্বরটি প্রদান বাফার উপচে পারেন। এটি প্রতি সে। নেট নেটওয়ার্কের সীমাবদ্ধতা নয়, তবে অন্তর্নিহিত উইন 32 অবকাঠামো। আমাদের অভিজ্ঞতায়, এই সমস্যাটি হ্রাস করার সর্বোত্তম উপায় হ'ল নোটিফিকেশনগুলি যত তাড়াতাড়ি সম্ভব চিহ্নিত করা এবং তাদের সাথে অন্য থ্রেডে ডিল করা।

উপরে @ চিলটেম্প দ্বারা উল্লিখিত হিসাবে, প্রহেলিকা উইন্ডোজবিহীন শেয়ারগুলিতে কাজ করতে পারে না। উদাহরণস্বরূপ, এটি মাউন্ট করা নভেল ড্রাইভে মোটেও কাজ করবে না।

আমি সম্মত হই যে কোনও হ'ল পরিবর্তনগুলি বেছে নিতে মাঝে মধ্যে পোল করা ভাল সমঝোতা।


4
ফাইল সিস্টেমে নজরদারি দ্রুত ধারাবাহিকতায় প্রচুর ইভেন্ট উত্থাপন শুরু করতে পারে। যদি আপনি আপনার ইভেন্ট হ্যান্ডলারটি দ্রুত বরখাস্ত হওয়ার সাথে সাথে কার্যকর করতে না পারেন তবে অবশেষে হ্যান্ডলারটি মেঝেতে ইভেন্টগুলি বাদ দেওয়া শুরু করবে এবং আপনি জিনিসগুলি মিস করবেন।
ব্রেন্ট রকউড

17

এছাড়াও নোট করুন যে ফাইল সিস্টেম ভিচার ফাইল শেয়ারের উপর নির্ভরযোগ্য নয়। বিশেষত যদি ফাইল ভাগটি একটি নন-উইন্ডোজ সার্ভারে হোস্ট করা হয়। এফএসডাব্লু সমালোচনামূলক কোনও কিছুর জন্য ব্যবহার করা উচিত নয়। অথবা এটি কোনও কিছু মিস করেছে না তা যাচাই করতে মাঝে মধ্যে পোলের সাথে ব্যবহার করা উচিত।


3
মাইক্রোসফ্ট স্বীকার করেছে যে এটি উইন্ডোজ ফাইল শেয়ারের ক্ষেত্রে নির্ভরযোগ্য নয়? উইন্ডোজ শেয়ার থেকে লিনাক্স ভিত্তিক এসএমবি শেয়ারে স্যুইচ করার পরে আমরা অবশ্যই এই প্রথম হাতটি অনুভব করছি।
শান

1
আমার এরকম কিছু জানা নেই. এবং আমি নিশ্চিত যে এটি সহজেই বিভিন্ন বিক্রেতার মধ্যে একটি দোষের খেলা হবে।
চিলটেম্প

1
আমরা ম্যাপযুক্ত ড্রাইভগুলিতে ফাইল সিস্টেম ওয়াচারের সাথে সমস্যার সম্মুখীন হয়েছি। যদি মানচিত্রটি সংযোগ বিচ্ছিন্ন হয়ে যায় এবং তারপরে আবার ফাইল সংযোগকারী পুনরায় সংযোগ স্থাপন করে তবে আর পরিবর্তনগুলি উত্থাপন করা হয় না। সহজে সমাধান হয়েছে তবে ফাইল সিস্টেম পর্যবেক্ষক আইএমএইচওর বিরুদ্ধে এখনও ধর্মঘট।
রিচার্ড ডরম্যান

11

ব্যক্তিগতভাবে, আমি FileSystemWatcherএটি একটি প্রোডাকশন সিস্টেমে ব্যবহার করেছি এবং এটি দুর্দান্ত কাজ করেছে। গত months মাসে, এটিতে 24x7 চলমান একটিও হিচাপ নেই। এটি একটি একক স্থানীয় ফোল্ডার (যা ভাগ করে নেওয়া) নিরীক্ষণ করছে। এটি পরিচালনা করতে আমাদের কাছে তুলনামূলকভাবে অল্প সংখ্যক ফাইল অপারেশন রয়েছে (10 টি ইভেন্ট প্রতিদিন চালানো হয়)। এটি এমন কিছু নয় যা আমাকে কখনও চিন্তিত করতে হয়েছিল। আমি যদি সিদ্ধান্তটি পুনরায় তৈরি করতে হয় তবে আমি এটি আবার ব্যবহার করব।


7

আমি বর্তমানে FileSystemWatcherপ্রতি 100 মিলিসেকেন্ডে আপডেট হওয়া একটি এক্সএমএল ফাইলটি ব্যবহার করি ।

আমি খুঁজে পেয়েছি যে যতক্ষণ না FileSystemWatcherযথাযথভাবে কনফিগার করা থাকে ততক্ষণ আপনার স্থানীয় ফাইলগুলির সাথে সমস্যা হওয়া উচিত নয় ।

দূরবর্তী ফাইল দেখার এবং উইন্ডোজবিহীন শেয়ারগুলির বিষয়ে আমার কোনও অভিজ্ঞতা নেই।

আমি এই ফাইলটি পোলিংকে অপ্রয়োজনীয় এবং ওভারহেডের পক্ষে মূল্যহীন বলে বিবেচনা করব যদি না আপনি স্বভাবতই অবিশ্বাস করেন FileSystemWatcherবা এখানকার প্রত্যেকে তালিকাভুক্ত করেছেন (উইন্ডোজবিহীন শেয়ার, এবং দূরবর্তী ফাইল দেখার) সীমাবদ্ধতার সরাসরি অভিজ্ঞতা না পেয়ে থাকেন।


5

আমি ভোট দিয়ে যাব।

নেটওয়ার্ক ইস্যুগুলির কারণে FileSystemWatcherঅবিশ্বাস্য হতে পারে (ত্রুটির ইভেন্টটি ওভারলোড করার পরেও)।


5

FileSystemWatcherনেটওয়ার্ক শেয়ার ব্যবহার করে আমি সমস্যায় পড়েছি । আপনি যদি খাঁটি উইন্ডোজ পরিবেশে থাকেন তবে এটি কোনও সমস্যা নাও হতে পারে তবে আমি একটি এনএফএস শেয়ার দেখছিলাম এবং যেহেতু এনএফএস রাষ্ট্রহীন, আমি যে ফাইলটি দেখছিলাম সেটির পরিবর্তন ঘটেছিল এমন কোনও বিজ্ঞপ্তি কখনই ছিল না।


আমি একই সমস্যাটি আঘাত করেছি, তবে ফাইলসিস্টেমওয়াটার একই উইন্ডোজ সার্ভারে ছিল যা এনএফএস ব্যবহার করে ফোল্ডারটি ভাগ করে নিয়েছিল me এনএফএসের সাথে একটি ফোল্ডার ভাগ করে নেওয়ার প্রকোপ ফাইল সিস্টেমস্টাওয়্যাচারকে শেয়ারটি দূরবর্তীভাবে ব্যবহার করে তৈরি হওয়া ফাইলগুলি দেখতে না পাওয়ার কারণ (যেমন লিনাক্স যা ভাগ করে দেয়) যখন আমি যদি খুব একই ফোল্ডারে কোনও ফাইল মনিটরিংয়ের অধীনে লিখি তবে ফাইলসিস্টভ্যাচারটি ট্রিগার হয়। দেখে মনে হচ্ছে এনএফএস সার্ভারটি একটি নিম্ন স্তর ব্যবহার করে ফাইলগুলি লিখে এবং এপিআই স্তর যা ফাইলস্মিস্টাচারটি চালিত করে তাতে নিযুক্ত নেই, কারও কাছে আরও তথ্য আছে?
মোসো বোটাচিনি

3

নেটওয়ার্ক ড্রাইভগুলিতে এফএসডাব্লুতে আমার কিছু বড় সমস্যা ছিল: একটি ফাইল মোছা সর্বদা ত্রুটির ঘটনাটি ছুঁড়ে দেয়, কখনও মুছে ফেলা ইভেন্ট নয়। আমি কোনও সমাধান খুঁজে পাইনি, তাই আমি এখন এফএসডাব্লু এড়ানো এবং পোলিং ব্যবহার করি।

অন্যদিকে সৃষ্ট ইভেন্টগুলি দুর্দান্ত কাজ করেছে, সুতরাং আপনার যদি কেবল ফাইল তৈরির জন্য নজর রাখা দরকার তবে আপনি এফএসডাব্লু যেতে পারেন।

এছাড়াও, স্থানীয় ফোল্ডারগুলিতে আমার মোটেই সমস্যা ছিল না, ভাগ করা হোক বা না থাকুক।


3

ইভেন্টের পদ্ধতি থেকে যত তাড়াতাড়ি সম্ভব ফিরে আসার সাথে সাথে অন্য থ্রেড ব্যবহার করে আমার সমস্যার সমাধান হয়েছে:

private void Watcher_Created(object sender, FileSystemEventArgs e)
{
    Task.Run(() => MySubmit(e.FullPath));
}

2

আমার মতে এফএসডাব্লু এবং পোলিং উভয়ই ব্যবহার করা সময় এবং সংস্থানগুলির অপচয় এবং অভিজ্ঞ বিকাশকারীরা এটির পরামর্শ দেয় বলে আমি অবাক। যদি কোনও "এফএসডাব্লু মিস না" পরীক্ষা করার জন্য আপনার যদি ভোটদানের প্রয়োজন হয় তবে আপনি স্বাভাবিকভাবে এফএসডাব্লুটিকে পুরোপুরি ফেলে দিতে পারেন এবং কেবল ভোটদান ব্যবহার করতে পারেন।

আমি বর্তমানে সিদ্ধান্ত নেওয়ার চেষ্টা করছি যে আমি বিকাশিত কোনও প্রকল্পের জন্য আমি এফএসডাব্লু বা পোলিং ব্যবহার করব কিনা । উত্তরগুলি পড়া, এটি সুস্পষ্ট যে এমন কিছু ক্ষেত্রে রয়েছে যেখানে এফএসডাব্লু সঠিকভাবে প্রয়োজনগুলি কভার করে, অন্য সময় আপনার ভোটদানের প্রয়োজন । দুর্ভাগ্যক্রমে, কোনও উত্তরই আসলে "নির্ভরযোগ্যতা" ইস্যুগুলির সাথে পারফরম্যান্সের পার্থক্যের সাথে মোকাবিলা করতে পারেনি (যদি থাকে তবে)। এমন কেউ কি আছেন যে প্রশ্নের অংশটির উত্তর দিতে পারে?

সম্পাদনা করুন: nmclean উভয় FSW এবং ভোটকেন্দ্রে ব্যবহারের বৈধতা জন্য এর বিন্দু একটি খুব যুক্তিসঙ্গত ব্যাখ্যা করা (যদি আপনি আলোচনা মন্তব্যের, পড়তে পারেন আপনি আগ্রহী হলে) প্রদর্শিত কেন এমন পরিস্থিতিতে উভয় FSW এবং ভোটকেন্দ্রে ব্যবহার হতে পারে হয় দক্ষ. আমার (এবং অন্য যে একই মতামত রয়েছে) এর জন্য আলোকপাত করার জন্য আপনাকে ধন্যবাদ, এনএমকিলান


1
আপনি যদি ফাইলের পরিবর্তনে যত তাড়াতাড়ি সাড়া দিতে চান তবে কী হবে? উদাহরণস্বরূপ আপনি যদি প্রতি মিনিটে একবার পোল করেন, আপনার কোনও ফাইল পরিবর্তন এবং আপনার অ্যাপ্লিকেশন পরিবর্তনের বিষয়ে বাছাইয়ের মধ্যে প্রায় 1 মিনিটের বিলম্ব হতে পারে। এফএসডাব্লু ইভেন্টটি সম্ভবত এর আগে সম্ভবত ট্রিগার করা হবে। সুতরাং উভয় ব্যবহার করে আপনি যতটা সামান্য দেরি করে ইভেন্টগুলি পরিচালনা করছেন, তবে মিস করা ইভেন্টগুলি যদি থাকে তবে বাছাইও করুন।
rom99

@ rom99 ঠিক আমার বক্তব্য যদি আপনার দ্রুত প্রতিক্রিয়ার প্রয়োজন হয় এমন ক্ষেত্রে যদি এফএসডাব্লু অবিশ্বাস্য হয় তবে এটি ব্যবহার করার কোনও অর্থ নেই, যেহেতু আপনার এমন কেস থাকবে যেখানে কোনও তাত্ক্ষণিক প্রতিক্রিয়া হবে না, সুতরাং, আপনার আবেদনটি অবিশ্বস্ত হবে। সংক্ষিপ্ত বিরতিতে, একটি থ্রেডে পোলিং আপনার যা করার দরকার তা হবে। এমনটি করে উভয় , মানে আপনি যে পোলিং কভার, তাই হয়, শুধুমাত্র পোলিং ব্যবহার কেন নয় প্রতিক্রিয়া সময়ে একটি সহনশীলতা আছে?
থান্ডারগ্রি

5
@ থান্ডারগ্রি "এইভাবে, আপনার আবেদনটি অবিশ্বস্ত হবে। - অনেক ক্ষেত্রে গতি নির্ভরযোগ্যতার জন্য পূর্বশর্ত নয়। কাজটি অবশ্যই শেষ হতে হবে তবে এটি কিছুক্ষণ অপেক্ষা করতে পারে। যদি আমরা দ্রুত, অবিশ্বাস্য এফএসডাব্লু এর সাথে ধীর, নির্ভরযোগ্য পোলিংয়ের সমন্বয় করি তবে আমরা এমন একটি অ্যাপ্লিকেশন পাই যা সর্বদা নির্ভরযোগ্য এবং কখনও কখনও দ্রুত হয়, যা নির্ভরযোগ্যের চেয়ে ভাল এবং কখনও দ্রুত নয়। আমরা এফএসডাব্লু অপসারণ করতে পারি এবং ধ্রুবক ভোটদানের মাধ্যমে একই সর্বোচ্চ প্রতিক্রিয়া সময় অর্জন করতে পারি, তবে এটি অন্যান্য প্রয়োগের প্রতিক্রিয়াশীলতার ব্যয়, তাই যদি তাত্ক্ষণিক প্রতিক্রিয়া একেবারে প্রয়োজন হয় তবেই করা উচিত।
nmclean

2
এখন কেন উপরেরটি একটি দুর্বল যুক্তি? কারণ, যদিও আমাদের এখনও ডিস্ক অ্যাক্সেস প্রয়োজন, আমাদের এটি কম প্রয়োজন । একইভাবে, আপনি কম পোল করতে পারেন। কেবলমাত্র আমরা এখনও সমস্ত ফাইল পরীক্ষা করে দেখছি বোঝা যাচ্ছে না কাজের চাপ একই is আপনার বক্তব্য, "এফএসডাব্লু দিয়ে সিপিইউ সময়ে পোলিং ব্যয়বহুল, না" মিথ্যা । এফএসডাব্লুতে "নকলতা" উদ্বেগকে অফলোড করে, আমরা ভোটগ্রহণকে একটি অলস, নিম্ন-অগ্রাধিকারের কার্যে পরিবর্তন করতে পারি , যেমন যে কোনও সময় আবেদনের ব্যস্ততা মারাত্মকভাবে হ্রাস পায় যখন এখনও অনর্থকতার "ট্রিট" সরবরাহ করে। আপনি কেবল ভোটদানের মাধ্যমে একই ব্যালেন্স অর্জন করতে পারবেন না।
nmclean

9
@ এনএমক্লান আপনার যেভাবে করেছিলেন তা পরিষ্কার করার জন্য সময় এবং শক্তি দেওয়ার জন্য আপনাকে ধন্যবাদ। আপনি যখন সেভাবে রাখেন, এটি অবশ্যই আরও বেশি অর্থবোধ করে। ঠিক যেমন অনেক সময় আছে যে কোনও ক্যাশে আপনার নির্দিষ্ট সমস্যার জন্য উপযুক্ত নয়, সুতরাং FSW (যখন এটি অবিশ্বস্ত প্রমাণিত হয়) উপযুক্ত নাও হতে পারে। দেখা যাচ্ছে যে আপনি ঠিক পাশাপাশি ছিলেন। আমি দুঃখিত যে এটি পেতে আমার এত বেশি সময় লেগেছে।
থান্ডারগ্রি

1

পরিবর্তনের পরিবর্তে ইভেন্ট তৈরির সাথে কাজ করার জন্য সমাধানের সমাধান

এমনকি অনুলিপি, কাটা, পেস্ট, সরানোর জন্য।

class Program
{        

        static void Main(string[] args)
        {
            string SourceFolderPath = "D:\\SourcePath";
            string DestinationFolderPath = "D:\\DestinationPath";
            FileSystemWatcher FileSystemWatcher = new FileSystemWatcher();
            FileSystemWatcher.Path = SourceFolderPath;
            FileSystemWatcher.IncludeSubdirectories = false;
            FileSystemWatcher.NotifyFilter = NotifyFilters.FileName;   // ON FILE NAME FILTER       
            FileSystemWatcher.Filter = "*.txt";         
             FileSystemWatcher.Created +=FileSystemWatcher_Created; // TRIGGERED ONLY FOR FILE GOT CREATED  BY COPY, CUT PASTE, MOVE  
            FileSystemWatcher.EnableRaisingEvents = true;

            Console.Read();
        }     

        static void FileSystemWatcher_Created(object sender, FileSystemEventArgs e)
        {           
                string SourceFolderPath = "D:\\SourcePath";
                string DestinationFolderPath = "D:\\DestinationPath";

                try
                {
                    // DO SOMETING LIKE MOVE, COPY, ETC
                    File.Copy(e.FullPath, DestinationFolderPath + @"\" + e.Name);
                }
                catch
                {
                }          
        }
}

স্ট্যাটিক স্টোরেজ ব্যবহার করে ফাইল অ্যাট্রিবিউট পরিবর্তন ইভেন্টের সময় এই ফাইল পর্যবেক্ষকের সমাধান

class Program
{
    static string IsSameFile = string.Empty;  // USE STATIC FOR TRACKING

    static void Main(string[] args)
    {
         string SourceFolderPath = "D:\\SourcePath";
        string DestinationFolderPath = "D:\\DestinationPath";
        FileSystemWatcher FileSystemWatcher = new FileSystemWatcher();
        FileSystemWatcher.Path = SourceFolderPath;
        FileSystemWatcher.IncludeSubdirectories = false;
        FileSystemWatcher.NotifyFilter = NotifyFilters.LastWrite;          
        FileSystemWatcher.Filter = "*.txt";         
        FileSystemWatcher.Changed += FileSystemWatcher_Changed;
        FileSystemWatcher.EnableRaisingEvents = true;

        Console.Read();
    }     

    static void FileSystemWatcher_Changed(object sender, FileSystemEventArgs e)
    {
        if (e.Name == IsSameFile)  //SKIPS ON MULTIPLE TRIGGERS
        {
            return;
        }
        else
        {
            string SourceFolderPath = "D:\\SourcePath";
            string DestinationFolderPath = "D:\\DestinationPath";

            try
            {
                // DO SOMETING LIKE MOVE, COPY, ETC
                File.Copy(e.FullPath, DestinationFolderPath + @"\" + e.Name);
            }
            catch
            {
            }
        }
        IsSameFile = e.Name;
    }
}

একাধিক ট্রিগার ইভেন্টের এই সমস্যার জন্য এটি একটি কার্যকর সমাধান।


0

আমি বলব ভোটদানটি বিশেষত একটি টিডিডি দৃশ্যে ব্যবহার করুন, কারণ ফাইলগুলির উপস্থিতি উপহাস করা বা আটকে রাখা আরও সহজ is এটি যে fsw ত্রুটি দ্বারা জর্জরিত হয়েছিল এমন বেশ কয়েকটি অ্যাপ্লিকেশনগুলিতে কাজ করেছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.