1

IIS7を実行しているASP.NETWebアプリケーションで使用されるクラスをVB.Netで作成しました。.NETFramework4.0を使用しています。このクラスは、オンラインに対してREST要求を実行し、強く型付けされたデータを含むXML応答を取得します。

このクラスは、SQLServerデータベースを使用してキャッシュも実行します。クラスは.DLLにコンパイルされ、Webアプリケーションによって参照されます。それは素晴らしい働きをします、そして今私はクラスをスレッドセーフにする方法を知る必要があります。

コードを「スレッドセーフ」にした経験はありません。スレッドセーフかどうかを判断するためにどこから始めればよいのかわかりません。開発中にこれに注意を払わなかったので、スレッドセーフではなく、Webアプリケーションは多くのユーザーによって同時に使用されるため、注意を払う必要があると想定しています。

スレッドセーフをテストする方法を誰かに教えてもらえますか?私にいくつかのアイデアを与えるオンラインのリソースはありますか?私の主な関心事がどこにあるかについて私を導く経験則はありますか?

4

1 に答える 1

1

気を付けられる最も簡単なことは、「静的」(C#)または「共有」(VB.NET)変数の使用です。これらの変数をアプリケーションの存続期間を通じて変更できる場合、スレッドの問題が発生する可能性があり、実際には「ランダムに見える」問題が発生する可能性があります。

また、SQL(キャッシュ用)にヒットする複数の.NETスレッドが、その設計方法によっては問題を引き起こす可能性があるため、データベースでのキャッシュの実行方法についても懸念します。

結論として、問題が発生しないことを確認したい場合は、スレッドについてさらに学習する必要があります。おそらく、単純なものから非常に複雑なC#トピックに関して私が今まで読んだ中で最高の本は、C#4.0です。一言で言えば、その本、特にスレッドの章を見ていきます。(ただし、すべてを真剣に読んでください)それを読み通し、言及された概念を十分に理解していれば、問題はないはずです。

于 2012-05-29T06:08:38.157 に答える