この質問は、スレッドの安全性と非同期プログラミングに関するものです。私は私の最終的な解決が大丈夫かどうかを知りたい。C#: 'lock'命令による非同期メソッド
私はこのようになりますスレッドセーフなクラスがあります:私は私のクラスに非同期メソッドを追加する場合
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-あなたのクラスがスレッドセーフであるというあなたの主張を、文脈がなくても確認することは不可能です。 (async voidメソッド以外の)あなたが投稿したコードには明らかに間違っているようですが、あまりコードはありません。 –
も参照してください[このように「スレッドセーフ」とは何ですか?](http://www.grumpydev.com/2010/02/26/so-what-is-this-thread-safe-thing -anyway /) –