तो यह मेरे आखिरी प्रश्न से एक निरंतरता है - तो सवाल था "एक प्रोग्राम बनाने के लिए सबसे अच्छा तरीका क्या है जो थ्रेड सुरक्षित है कि इसे फ़ाइल में डबल मान लिखने की आवश्यकता है। अगर वह कार्य बचाता है धारावाहिक के माध्यम से मूल्य एकाधिक धागे द्वारा बुलाया जा रहा है? इसे करने का सबसे अच्छा तरीका क्या है? "थ्रेड सुरक्षित StreamWriter सी # यह कैसे करें? 2
और मैंने एमएसडीएन में मिले कुछ कोड को संशोधित किया, निम्नलिखित के बारे में कैसे? यह फ़ाइल को सब कुछ सही ढंग से लिखता है।
namespace SafeThread
{
class Program
{
static void Main()
{
Threading threader = new Threading();
AutoResetEvent autoEvent = new AutoResetEvent(false);
Thread regularThread =
new Thread(new ThreadStart(threader.ThreadMethod));
regularThread.Start();
ThreadPool.QueueUserWorkItem(new WaitCallback(threader.WorkMethod),
autoEvent);
// Wait for foreground thread to end.
regularThread.Join();
// Wait for background thread to end.
autoEvent.WaitOne();
}
}
class Threading
{
List<double> Values = new List<double>();
static readonly Object locker = new Object();
StreamWriter writer = new StreamWriter("file");
static int bulkCount = 0;
static int bulkSize = 100000;
public void ThreadMethod()
{
lock (locker)
{
while (bulkCount < bulkSize)
Values.Add(bulkCount++);
}
bulkCount = 0;
}
public void WorkMethod(object stateInfo)
{
lock (locker)
{
foreach (double V in Values)
{
writer.WriteLine(V);
writer.Flush();
}
}
// Signal that this thread is finished.
((AutoResetEvent)stateInfo).Set();
}
}
}
downvotes साथ कुछ टिप्पणियां अच्छा हो गया होता। –