CoreApplication.RequestRestartForUserAsync(User, String) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
在不同的使用者的內容中重新開機應用程式。
public:
static IAsyncOperation<AppRestartFailureReason> ^ RequestRestartForUserAsync(User ^ user, Platform::String ^ launchArguments);
/// [Windows.Foundation.Metadata.RemoteAsync]
static IAsyncOperation<AppRestartFailureReason> RequestRestartForUserAsync(User const& user, winrt::hstring const& launchArguments);
[Windows.Foundation.Metadata.RemoteAsync]
public static IAsyncOperation<AppRestartFailureReason> RequestRestartForUserAsync(User user, string launchArguments);
function requestRestartForUserAsync(user, launchArguments)
Public Shared Function RequestRestartForUserAsync (user As User, launchArguments As String) As IAsyncOperation(Of AppRestartFailureReason)
參數
- user
- User
要重新開機應用程式的使用者。
- launchArguments
-
String
Platform::String
winrt::hstring
要傳遞至重新開機實例的引數。
傳回
重新開機要求的狀態。
- 屬性
Windows 需求
裝置系列 |
Windows 10 Fall Creators Update (已於 10.0.16299.0 引進)
|
API contract |
Windows.Foundation.UniversalApiContract (已於 v5.0 引進)
|
範例
private async void RestartAsAnotherUser(string selectedUser)
{
IReadOnlyList<User> users = await User.FindAllAsync();
foreach (User user in users)
{
object accountProperty =
await user.GetPropertyAsync(KnownUserProperties.AccountName);
string accountName = (string)accountProperty;
if (accountName == selectedUser)
{
// Attempt restart, with arguments.
AppRestartFailureReason result = await App.RequestRestartForUserAsync(
user, "-fastInit -mainMenu");
// Restart request denied, tell the user to restart manually.
if (result== AppRestartFailureReason.InvalidUser)
{
SendToast(string.Format("Could not restart as user {0} - please manually restart.", user));
}
}
}
}
備註
- 應用程式在呼叫此 API 時必須可見且前景。
- 如果重新開機失敗,但使用者後續會手動啟動應用程式,應用程式會正常啟動,而且不會傳遞任何重新開機引數。
- 如果應用程式未以正常方式啟動,但是由共用合約、檔案選擇器、應用程式服務等啟動,則應用程式不應該呼叫此 API,因為使用者不會預期產生的行為。
- 應用程式負責確保 User 物件的有效性。 如果有原則可防止該使用者執行應用程式,則啟用將會失敗。
- 應用程式在呼叫此 API 之後,不應該要求「擴充執行」會話,因為這會導致使用者體驗不佳。
- 如果應用程式在呼叫此 API 時執行任何進程背景工作,這些工作將會以正常方式取消。 跨進程背景工作將不會受到影響。
- 重新開機應用程式時, LaunchActivatedEventArgs.PreviousExecutionState 會有 Terminated 值,讓應用程式可以區分繼續和重新開機。