小编glo*_*ver的帖子

WinRT - MessageDialog.ShowAsync将在我的自定义类中抛出UnauthorizedAccessException

我想编写自己的控件,当调用ctor时,会显示一个MessageBox.

public class Class1
{
    public Class1()
    {
        ShowDialog();
    }
    void ShowDialog()
    {
        SynchronizationContext context = SynchronizationContext.Current;
        if (context != null)
        {
            context.Post((f) =>
            {
                MessageDialog dialog = new MessageDialog("Hello!");
                dialog.ShowAsync();
            }, null);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我的类被某人使用,并编写如下代码,则始终会抛出UnauthorizedAccessException dialog.ShowAsync();

void MainPage_Loaded(object sender, RoutedEventArgs e)
        {

            ClassLibrary1.Class1 c1 = new ClassLibrary1.Class1();
            MessageDialog dialog1 = new MessageDialog("");
            dialog1.ShowAsync();
        }
Run Code Online (Sandbox Code Playgroud)

有没有办法毫无例外地显示消息对话框?


我找到了一种方式,享受它!

Task ShowDialog()
        {
            CoreDispatcher dispatcher = Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher;
            Func<object, Task<bool>> action = null;
            action = async (o) =>
            {
                try
                {
                    if (dispatcher.HasThreadAccess) …
Run Code Online (Sandbox Code Playgroud)

.net c# unauthorizedaccessexcepti messagedialog windows-runtime

11
推荐指数
1
解决办法
9825
查看次数

为什么托管引导程序应用程序总是安装.Net框架,无论.net框架是否存在?

如果WixVariables WixMbaPrereqPackageIdWixMbaPrereqLicenseUrl未添加,它无法编译.

Windows Installer XML变量!(wix.WixMbaPrereqPackageId)未知.
Windows Installer XML变量!(wix.WixMbaPrereqLicenseUrl)未知.

如果添加了两个变量,即使我的测试计算机安装了.NET Framework 4.0,引导程序也会每次都安装.NET Framework 4.0.

当目标计算机已经具有.NET框架时,如何避免安装.NET Framework?

以下是我的示例代码.

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
    <Bundle Name="TestBootstrapper" Version="1.0.0.0" Manufacturer="Microsoft" UpgradeCode="e8c02687-b5fe-4842-bcc4-286c2800b556">    
<BootstrapperApplicationRef Id='ManagedBootstrapperApplicationHost'>
      <Payload SourceFile='MyBA.dll' />
    </BootstrapperApplicationRef>

    <!--<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />-->

        <Chain>
      <PackageGroupRef
                Id="Netfx4Full"/>
      <MsiPackage Name="SetupProject1.msi" SourceFile="data\SetupProject1.msi" DownloadUrl="http://myserver/SetupProject1.msi" Compressed="no">
      </MsiPackage>
      <MsiPackage Name="SetupProject2.msi" SourceFile="data\SetupProject2.msi" DownloadUrl="http://myserver/SetupProject2.msi" Compressed="no">
      </MsiPackage>
        </Chain>
    </Bundle>

  <Fragment>
    <WixVariable
        Id="WixMbaPrereqPackageId"
        Value="Netfx4Full" />
    <WixVariable
        Id="WixMbaPrereqLicenseUrl"
        Value="NetfxLicense.rtf" />

    <util:RegistrySearch
        Root="HKLM"
        Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full"
        Value="Version"
        Variable="Netfx4FullVersion" />
    <util:RegistrySearch
        Root="HKLM"
        Key="SOFTWARE\Microsoft\Net …
Run Code Online (Sandbox Code Playgroud)

wix bootstrapper

4
推荐指数
2
解决办法
5714
查看次数