我正在尝试编写一个小型线程应用程序,并想知道如何实现以下IEnum作为thread/threaded
?绝对初学者线程化,甚至不确定下面的方法可以被线程化。希望有一点通过。如何编写IEnum线程
static void Main(string[] args)
{
IEnumerable<string> e = Enumerable.Range(1, 100).Select(
n =>
(n % 15 == 0) ? "Fizzbuzz" :
(n % 3 == 0) ? "Fizz" :
(n % 5 == 0) ? "buzz" :
n.ToString())
.ToList();
WriteFile(e);
}
private static ReaderWriterLockSlim _readWriteLock = new ReaderWriterLockSlim();
private static void WriteFile(IEnumerable<string> text)
{
_readWriteLock.EnterWriteLock();
string path = @"C:\Users\Desktop\Test.txt";
try
{
using (StreamWriter stream = File.AppendText(path))
{
foreach (var item in text)
{
stream.WriteLine(item);
}
stream.Close();
}
}
catch (Exception e)
{
throw (e);
}
finally
{
// Release lock
_readWriteLock.ExitWriteLock();
}
}
首先,你不使用线程,所以你不必担心线程安全。其次,你只是从集合中读取数据,并且在定义之后从不写信给它,所以不用担心其他线程的修改...... –
对不起,我应该重新定义我的问题,我怎样才能让IEnum线程化?从来没有尝试过一个线程化的应用程序,只是想知道它是如何完成的,使用上面的例子。 –
请不要编码catch(Exception e){throw(e); }'。这是一个糟糕的做法,只会提供一个可以滋生虫子的环境。 – Enigmativity