ফাইল লক চেক কিভাবে?

একটি চেষ্টা / ধরা ব্লক ব্যবহার না করে একটি ফাইল লক আছে কিনা তা পরীক্ষা করার কোন উপায় আছে কি?

এখনই, আমি জানি একমাত্র উপায় হল ফাইলটি খুলুন এবং System.IO.IOException ধরুন।

0
এটি একটি পুরানো প্রশ্ন, এবং সমস্ত পুরানো উত্তর অসম্পূর্ণ বা ভুল। আমি একটি সম্পূর্ণ এবং সঠিক উত্তর যোগ।
যোগ লেখক Eric J., উৎস
আমি জানি এই প্রশ্নের উত্তর বেশ ভাল নয়, কিন্তু ডেভেলপারদের কিছু উপসেট যারা সাহায্যের জন্য এই খুঁজছেন হয় এই বিকল্প থাকতে পারে: যদি আপনি সিস্টেমের সাথে লক মালিক প্রক্রিয়া শুরু করেন। ডায়াগনস্টিক.প্রক্রিয়ায় আপনি পারেন। WaitForExit ()।
যোগ লেখক amalgamate, উৎস
সমস্যাটি হল একটি লক করা ফাইল ব্যতীত অনেক কারণের জন্য IOException নিক্ষিপ্ত হতে পারে।
যোগ লেখক JohnFx, উৎস

5 উত্তর

না, দুর্ভাগ্যবশত, এবং যদি আপনি এটি সম্পর্কে মনে করেন, তাহলে যে তথ্যটি অর্থহীন হতে পারে, যেহেতু এই ফাইলটি পরের দ্বিতীয় (পড়া: ছোট টাইপন) লক হয়ে যেতে পারে।

ফাইলটি যদি লক করা হয় তবে কেন আপনাকে জানতে হবে? আপনি ভাল উপদেশ দিতে আমাদের অন্য উপায় দিতে পারে যে জ্ঞাত।

যদি আপনার কোড এই মত দেখতে হবে:

if not locked then
    open and update file

তারপর দুটি লাইনের মধ্যে, আরেকটি প্রক্রিয়াটি সহজেই ফাইলটি লক করে দিতে পারে, আপনাকে একই সমস্যাটি দিয়ে আপনি শুরু করতে এড়ানোর চেষ্টা করছেন: ব্যতিক্রম

0
যোগ
হ্যাঁ, কিন্তু একটি ফাইল লক করা হয় কিনা তা স্বতন্ত্র চেকটি নিরর্থক, এটি করার জন্য শুধুমাত্র সঠিক উপায় ফাইলটি প্রয়োজন উদ্দেশ্যে ফাইলটি খুলতে চেষ্টা করুন, এবং সেই সময়ে লক সমস্যাটি পরিচালনা করুন। এবং তারপর, আপনি বলে, অপেক্ষা করুন, বা অন্য কোন ভাবে এটি মোকাবেলা।
যোগ লেখক Lasse Vågsæther Karl, উৎস
@ বার্ট দয়া করে বিস্তারিত বলুন, সেই পদ্ধতিটি কোথায় সংজ্ঞায়িত করা হয়েছে, এটি কি আপনি একটি লিঙ্ক প্রদান করতে পারেন? এবং দয়া করে মনে রাখবেন যে আমার উত্তরটি 3 য় ত্রৈমাসিক 2008, ভিন্ন .NET রানটাইম এবং সবগুলি পোস্ট করা হয়েছিল, কিন্তু এখনও ... কি ফাইল। ReadWaitForUnlock কি?
যোগ লেখক Lasse Vågsæther Karl, উৎস
এখন যে ফাইলটি লক করা হচ্ছে তার প্রক্রিয়াটি পাওয়া সম্ভব। stackoverflow.com/a/20623302/141172 দেখুন
যোগ লেখক Eric J., উৎস
আমি মনে করি যে এটি করা সবচেয়ে ভাল একটি ফাইল। রাইটওয়েটফর্ম ইউনিলক (ফাইল, সময়সীমা) পদ্ধতি। এবং সাফল্যের উপর নির্ভর করে নাল বা ফাইলস্ট্রিম ফেরত দেয়। আমি এখানে যুক্তি এখানে অনুসরণ করছি?
যোগ লেখক Bart Calixto, উৎস
@ লাসসিভি কার্লসেন আপনার উত্তরের উপর ভিত্তি করে আমি যা শেষ করেছি তার জন্য আমার উত্তর চেকআউট করুন। ReadWaitForUnlock আমার নিজের পদ্ধতি, শেষে TryOpenRead এ পরিবর্তিত
যোগ লেখক Bart Calixto, উৎস
আপনি এক্সেস অধিকার জন্য একই তর্ক করতে পারে যদিও এটি অবশ্যই আরো অসম্ভাব্য হবে।
যোগ লেখক ctusch, উৎস
যদি ফাইলটি লক করা থাকে, আমরা কিছু সময় অপেক্ষা করতে পারি এবং আবার চেষ্টা করতে পারি। ফাইল অ্যাক্সেসের ক্ষেত্রে যদি এটি অন্য ধরনের সমস্যা হয় তবে আমাদের কেবল ব্যতিক্রমটি প্রচার করা উচিত।
যোগ লেখক DixonD, উৎস
@ LasseV.Karlsen একটি preemptive চেক করার আরেকটি সুবিধা হল যে আপনি একটি সম্ভাব্য লং অপারেশন করার চেষ্টা করার আগে এবং ব্যবহারকারীকে অবহিত করতে পারেন মাঝপথে। লক মধ্যযুগীয় হয়ে এখনও কোর্স সম্ভব এবং হ্যান্ডেল করা প্রয়োজন, কিন্তু অনেক পরিস্থিতিতে এই ব্যবহারকারীর অভিজ্ঞতা যথেষ্টভাবে সাহায্য করবে।
যোগ লেখক Thiru, উৎস

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

0
যোগ

আপনি যদি ফাইলটি নিজেকে প্রথমটি পড়তে বা লক করার চেষ্টা করে দেখতে পারেন তবে তা দেখতে পাবেন।

Please see my answer here for more information.

0
যোগ

তারপর দুটি লাইনের মধ্যে, আরেকটি প্রক্রিয়াটি সহজেই ফাইলটি লক করে দিতে পারে, আপনাকে সেই একই সমস্যা প্রদান করে যা আপনি এগুলি শুরু করতে এড়িয়ে চলার চেষ্টা করছেন: ব্যতিক্রম।

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

অন্যদিকে IOException স্বতন্ত্রভাবে যথেষ্ট নয় যে লকিং আইও ব্যর্থতার কারণ। কারণ অস্থায়ী না কারণ হতে পারে।

0
যোগ

Interop ব্যবহার করার পরিবর্তে আপনি .NET FileStream বর্গ পদ্ধতি লক এবং আনলক ব্যবহার করতে পারেন:

FileStream.Lock http://msdn.microsoft.com/en-us/library/system.io.filestream.lock.aspx

FileStream.Unlock http://msdn.microsoft.com/en-us/library/system.io.filestream.unlock.aspx

0
যোগ
এটি সত্যিই সঠিক উত্তর, যেহেতু এটি ব্যবহারকারীকে শুধু লক / আনলক ফাইল না করার সুবিধা দেয় কিন্তু ফাইলের বিভাগগুলিও। "লেনদেন ব্যতিরেকে আপনি যা করতে পারেন না" মন্তব্যগুলি একটি কার্যকর উদ্বেগ বাড়াতে পারে, তবে এটি কার্যকারীতা না থাকার ভান করে বা এটির কোনওরকম লুকানো অবস্থায় না থাকলেও এটি কার্যকর নয়।
যোগ লেখক BrainSlugs83, উৎস
প্রকৃতপক্ষে, এটি একটি সমাধান নয় কারণ ফাইলটি লক থাকলে ফাইল স্ট্রীমের একটি উদাহরণ তৈরি করতে পারবেন না। (একটি ব্যতিক্রম নিক্ষিপ্ত হবে)
যোগ লেখক Zé Carlos, উৎস