检查线程是否是主线程

时间:2015-02-19 02:07:30

标签: c# mvvmcross portable-class-library

我在我们的大型应用程序上运行了一些测试,我发现有时UI线程正在做不应该的事情,比如DB / network /等。

我知道IMvxMainThreadDispatcher.RequestMainThreadAction,但我想要像:

public bool IsMainThread()

如果当前线程是主线程,则返回true。

在我为这段代码创建公关之前,我只是想仔细检查一下类似的东西是否还没有以其他方式提供?

谢谢。

1 个答案:

答案 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);
        }
    }

希望这有助于其他人。