Question: Creating an application where I need to implement the functionality of lock button of windows phone.

Anyone knows which method or event gets triggered when Lock button is pressed.
I tried searching in various namespaces, but didn't find it.

Answer: 
I have found the solution...

[CoreDispatcher.HasThreadAccess](https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.core.coredispatcher.hasthreadaccess) returns a bool indicating if you are on the UI thread or not.
My son just encountered this as an Issue so I thought I would add an updated answer.

The Main UI thread can be accessed using the Core Dispatcher `CoreWindow.GetForCurrentThread().Dispatcher` or `Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher`

Below is a class that implements the `Core Dispatcher` and tests whether the calling thread is the Main UI Thread. If so it invokes the action, otherwise calls `Dispatcher.RunAsync` to execute it on the Main UI thread.

```
class Threading {

     private static CoreDispatcher Dispatcher => 
     Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher;

     public static async void ThreadSafe(DispatchedHandler action)
        {
            // Calls Dispatcher.RunAsync to run a method on the Main UI Thread
            IAsyncAction UiThread(DispatchedHandler proc) => Dispatcher.RunAsync(CoreDispatcherPriority.Normal, proc);

            // Checks to see if this was called from the Main UI thread 
            // If we are in the Main UI thread then Invoke the action 
            // Otherwise: Send it to run in the Main Ui Thread.

            if (Dispatcher.HasThreadAccess) { action.Invoke(); } else { await UiThread(action); };
        }
    }

```

The above class could be used like so:

```
// Some event handler callback
private void SomeCallback(object sender)(){
    void line() => Frame.Navigate(typeof(PageName));
    Threading.ThreadSafe(line);
}

// Pass a handle to the control and a string to update it's text property
internal static void ChangeControlText(dynamic ctrl , string v)
    {
                void line() {ctrl.Text= v;}
                ThreadSafe(line);
    }

```