我正在编写跟踪类来查找模块/方法的执行时间。我有这样的课
public class Trace
{
static Dictionary<string, Stopwatch> watches = null;
static Trace()
{
Dictionary<string, Stopwatch> watches = new Dictionary<string, Stopwatch>();
}
public static void Start(string key, string losgMessage)
{
try
{
if (!watches.Keys.Contains(key))
{
Stopwatch watch = new Stopwatch();
watch.Start();
watches.Add(key, watch);
}
}
catch
{
}
}
public static void Stop(string key, Object logMessage, string sessionId)
{
try
{
if (!watches.Keys.Contains(key))
{
Stopwatch watch = watches[key];
watch.Stop();
//log goes here
}
}
catch
{
}
}
}
由于 wcf 是多线程环境并且“watches”静态变量范围是应用程序级别,如果有人(来自不同客户端的新 rqst)尝试使用相同的键执行相同的方法,我不会考虑它并跟踪它。那么在这种情况下,最好的选择是什么。任何建议都会有所帮助。
编辑:我目前正在使用密钥附加 sessionId。我不能在没有会话 ID 的情况下解决这个问题