0
這個問題是關於線程安全和異步編程。我想知道我的最終解決方案是否正確。C#:異步法「鎖定」指令
我有一個線程安全的類,它看起來是這樣的:
public class SafeLogger
{
public static SafeLogger Instance = new SafeLogger();
private object lock;
private UnsafeLogger logger;
private SafeLogger()
{
logger = new UnsafeLogger();
}
public void Log(string s)
{
lock (lock)
{
logger.Log(s);
}
}
}
如果我添加異步方法上我的課:
public async void LogAsync(string s)
{
await Task.Run(() => Log(s));
}
是我的代碼是否正確?
代碼審查的問題是更切合主題的代碼審查SE。這似乎是一個代碼審查基本上是你要求的,是對的嗎? – BradleyDotNET
【「這是什麼東西,你所說的‘線程安全’?](https://blogs.msdn.microsoft.com/ericlippert/2009/10/19/what-is-this-thing-you-call-thread-安全/),這是不可能的,以確認你的要求,你的類是線程安全的,沒有更多的內容。它是什麼,_you_通過「線程安全」?什麼具體的標準是你想見面嗎?除此之外,還有沒有按平均你發佈的代碼似乎沒有什麼明顯的錯誤(除了'async void'方法),但是那裏的代碼也不是很多,甚至沒有足夠的知道你爲什麼要用一個方法中的await沒有別的。 –
參見[那麼,什麼是這個「線程安全」的事反正?](http://www.grumpydev.com/2010/02/26/so-what-is-this-thread-safe-thing (不管怎麼說)/) –