标签: windows-runtime

C++/CX是否检测并解决了对象的循环?

根据我的理解, C++/CX不使用垃圾收集,而是使用引用计数方法.

引用计数的问题在于它不能处理循环.循环通常使用弱引用来解决,例如标准C++中的weak_ptr.

但我无法在C++/CX中找到明确指定弱引用的方法.从那以后我会假设这是由C++/CX本身处理的.我想知道C++/CX将如何解决这个问题.

例如,查看以下代码:

ref class Foo
{
public:
    Bar^ bar;
};

ref class Bar
{
public:
    Foo^ foo;
};

ref class App
{
public:
    virtual void OnLaunched(LaunchActivatedEventArgs^ args)
    {
        Foo^ foo = ref new Foo();
        Bar^ bar = ref new Bar();
        foo.bar = bar;
        bar.foo = foo;
    }
};
Run Code Online (Sandbox Code Playgroud)

C++/CX如何检测此循环?

C++/CX如何解决这个循环?

C++/CX如何决定这些对象中的哪一个应该是"根对象",哪一个应该是"弱引用"?

c++ reference-counting windows-runtime c++-cx

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

在Windows 8中的WinRT上动态代码执行(C++或.NET/C#)?

Windows 8 metro下的WinRT是否允许您动态加载和执行代码?例如,是否可以将dll下载到内存或隔离存储并从中运行代码?可以编写JIT编译脚本语言到本地汇编语言(例如第三方浏览器)的代码能够在WinRT中执行相同的操作,还是禁止将其作为"不安全"操作?

对于在WinRT中运行的"托管"代码,这个问题的答案是否有所不同?例如,在托管代码中,您是否可以从Internet下载程序集并使其在MEF中可被发现或以其他方式在运行时加载它?你能用某种形式的Reflection.Emit吗?在C++中,您可以运行应用程序在运行时生成的汇编代码,还是在运行时动态加载DLL(可能是某种形式的WinRT DLL)?

c# c++ dll windows-8 windows-runtime

11
推荐指数
4
解决办法
8169
查看次数

如何使用WinRT打开打包文件

我试图弄清楚如何将一些解析xml文件的.Net代码移植到WinRT.到目前为止,借助给定的System.Uri无法转换为Windows.Foundation.Uri,我有以下代码.在我创建Uri之后,我立即陷入困境:

    static readonly Uri ResourcesBase = new Uri(@"ms-resource://MyAssembly/"); 
    public override async void Load()
    {
        Uri uri = new Uri(ResourcesBase, filePath); // filePath = "Data//world.xml";
        XmlLoadSettings settings = new XmlLoadSettings() { ValidateOnParse = false };

        XmlDocument xmlDoc = await XmlDocument.LoadFromUriAsync(uri, settings);

        foreach (IXmlNode xmlNode in xmlDoc.ChildNodes)
        {
            ProcessNode(xmlNode);
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试调用XmlDocument.LoadFromUriAsyn(uri)时,我得到一个未处理的异常:

用户代码未处理ArgumentException - 值不在预期范围内.

有人觉得WinRT的一切都要难10倍吗?

编辑:

我已经尝试了以下所有字符串,并得到完全相同的错误:

  Uri uri = new Uri("ms-resource://MyAssembly//" + filePath);
  Uri uri = new Uri("ms-resource://MyAssembly/" + filePath);
  Uri uri = new Uri("d:\\projects\\crystal\\" + filePath); // …
Run Code Online (Sandbox Code Playgroud)

c# xml uri file windows-runtime

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

在Windows 8网格中处理滑动客户端

我正在尝试实现一个自定义控件,它包含一个带有一些画布元素作为子元素的网格,当在网格上进行滑动操作时,我打算用canvas元素执行一些操作.我无法处理网格的滑动,我已经在msdn - win8 Dev论坛中发布了相同的内容

c# xaml windows-8 windows-runtime winrt-xaml

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

如何禁用Windows 8/WinRT AppBar?

我的目标是在某种情况下只提供AppBar.我试图通过创建一个AppBar来实现这一目标,但在这种情况出现之前将其禁用.但是,如果您将IsEnabledAppBar上的属性设置为False,当您启动应用程序并右键单击(通常会打开AppBar)时,应用程序崩溃.这是框架中的错误吗?禁用AppBar的正确方法是什么?

编辑:这也是当你设置发生VisibilityCollapsed.

更多信息:我通过Visual Studio调试器运行它,但是弹出一个单独的"Visual Studio即时调试器"窗口,其中显示消息"App.exe [2596]中发生了未处理的win32异常".弹出一个警告框,上面写着"调试器附加到App.exe但未配置为调试此未处理的异常.要调试此异常,请分离当前的调试器."

编辑2:这不仅仅是我的代码.如果您只是添加IsEnabled="False"到Microsoft自己的示例AppBarControl项目中的AppBar,它也会崩溃(可在此处找到:http://code.msdn.microsoft.com/windowsapps/XAML-AppBar-control-sample-2aa1cbb4 )

编辑3:@G.Andrew Duthie - devhammer提供了我正在使用的答案.我只是想补充一点,我发现最好用this.BottomAppBar = null它来禁用它,而不是设置IsEnabledVisibility属性.如果您只是设置VisibilityCollapsed,那么当您右键单击时,应用程序仍然认为AppBar存在,即使它不可见,因此您的下一个常规点击将被解释为通常关闭AppBar的点击,因此您将必须再次单击才能实际执行您尝试的操作.

c# microsoft-metro windows-8 windows-runtime winrt-xaml

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

尝试从WinJS中读取C#WinRT组件中的空字符串时出现异常

我有以下场景:C#中的数据库被编译为Windows运行时组件.

其中一个类看起来像这样:

public sealed class MyData
{
  string TheGoods { get; private set;}
}
Run Code Online (Sandbox Code Playgroud)

用户界面在WinJS中,我有以下内容:

var b = dataInstance.theGoods;
Run Code Online (Sandbox Code Playgroud)

问题是我得到一个异常,属性中包含以下内容:

System.StubHelpers.HStringMarshaler.ConvertToNative(String managed)中的System.ArgumentNullException

看一下HStringMarshaler.ConvertToNative的实现,如果字符串为null,它似乎抛出.

这是否意味着将空字符串暴露给WinJS是不可能的?这是WinJS限制还是适用于所有WinRT?

虽然string.Empty确实有效,但它在语义上与null不同,在某些情况下,empty是有效的且不同于null.

如果我将属性的类型更改为'object',那么它确实有效,但是当它真的应该是一个字符串时暴露一个对象似乎很讨厌.有任何想法吗?文档对此非常清楚

c# windows-runtime winjs

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

如何在后台任务中精确测量CPU使用率?

WinRT中后台任务的CPU使用率配额为1秒,如果它们位于锁定屏幕上,则为2秒.问题是如何准确测量这种CPU使用情况 - 我想知道我的代码是否在这2秒的配额下运行?我想在执行任务之前和之后只使用DateTime.Now不是正确的方法.
有关后台任务的MSDN文章:
使用后台任务支持您的应用程序

microsoft-metro windows-8 windows-runtime

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

如何在Java中的一个cmd窗口中运行多个命令?

我想做的是batch从java应用程序多次运行一个文件.因此我设置了一个for-loop运行此代码的n时间:

for (int i = 0; i < n; i++) {
    Runtime.getRuntime().exec("cmd /c start somefile.bat");
}
Run Code Online (Sandbox Code Playgroud)

问题是现在每次运行命令时都会弹出一个新的cmd窗口.但是,我想要的只是一个窗口,它在开头弹出,用于显示以下命令调用中的所有数据.

我怎样才能做到这一点?

java for-loop batch-file windows-runtime

11
推荐指数
2
解决办法
5万
查看次数

迁移到VS2013.4后调用WinRT组件时类未注册的异常

我有一个HTML5应用程序,它包含一个用于文件系统操作的.winmd组件(sqlite,zip存档等).

升级到2013.4后,该组件突然停止工作.Javascript仍然可以看到所有类和函数,但是当我尝试调用它们中的任何一个时,我得到"WinRT:Class not registered"异常.

完全VS重新安装没有帮助.也没有升级到社区版本.在桌面(8.1pro)和笔记本电脑(win8.1单语言)上重现此行为

我花了2天尝试找出什么是错的,我发现它只要组件包括任何asyncronous活动(如等待/异步或只是Task.Delay(100))失败

所以我担心的是......发生了什么事?哪里我错了,我该怎么办?

现在正在安装2015预览版.如果我使用系统还原回滚到2013.3,项目工作正常,但VS处于半破坏状态,并且MS网站上没有链接可以下载以前的版本.

如果我说的没有任何意义,我可以上传一个文件,其中包含最简单的VS解决方案来重现问题.但简而言之,它很简单:

namespace NSUtil {
  public sealed class Test{
    public static IAsyncOperation<string> DoSomething () {
      return Task<string>.Run(async () => {
        await Task.Delay(100);
        return "";
      }).AsAsyncOperation();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

一旦我NSUtil.Test.doSomething()从javascript 调用,我就会得到WinRTError: Class not registered例外.

所以问题是......我/我的电脑/我的安装/微软开发者有什么问题?

javascript c# windows-runtime windows-store-apps visual-studio-2013

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

通用Windows应用程序如何具有多个独立窗口(如Microsoft的应用程序"照片")?

我知道如何使用打开其他窗口TryShowAsStandaloneAsync.但是,如果原始窗口关闭 - TryShowAsStandaloneAsync失败(为什么?).我不知道如何"复活"它(原始窗口).

但"照片"似乎可以像桌面应用程序一样正常工作.它是如何做到的?(我想模仿那个.)可以打开一个带有图像的窗口,打开另一个窗口,关闭第一个窗口,然后仍然可以打开更多窗口.

任何方式都可以 - 没有主窗口显示的某种方式启动窗口,或者在关闭后重新启动主窗口的某种方式(为了使它成为必须打开的新窗口),或者其他方式.

c# windows-runtime windows-store-apps win-universal-app uwp

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