我在我们的大型应用程序上运行了一些测试,我发现有时UI线程正在做不应该的事情,比如DB / network /等。
我知道IMvxMainThreadDispatcher.RequestMainThreadAction
,但我想要像:
public bool IsMainThread()
如果当前线程是主线程,则返回true。
在我为这段代码创建公关之前,我只是想仔细检查一下类似的东西是否还没有以其他方式提供?
谢谢。
答案 0 :(得分:1)
最后,我发现了一些可以帮助我的东西。
DebugEx.Assert(Environment.CurrentManagedThreadId != 1);
在我们没有Threading.CurrentThread的PCL库上,找到Environment
上的值只是帮我找到了一个我们正在搜索很长时间的麻烦僵局。
通常1是UI线程,但可以肯定的是,将BP放在任何UI线程代码上并仔细检查该值。
另外,我的断言如下:
// The [DebuggerHiddenAttribute] makes debugger stop
// on the actual DebugEx.Assert(...) call, rather than inside
// the DebugEx.Assert(...) method itself.
[DebuggerHiddenAttribute]
public static void Assert(bool condition)
{
if (Debugger.IsAttached)
{
if (!condition)
{
Debugger.Break();
}
}
else
{
Debug.Assert(condition);
}
}
希望这有助于其他人。