自从几天前发布了Windows8消费者预览版以来,我正在使用C#开发新的WinRT(适用于Metro应用程序),并将我自己编写的IRC类移植到新的线程和网络。问题是:我的类正在运行一个从服务器接收消息的线程。如果发生这种情况,线程会进行一些解析,然后触发一个事件来通知应用程序这件事。订阅的函数然后“应该”更新UI(一个文本block)。这就是问题所在,线程无法更新UI,并且与.NET4.0一起使用的调用程序方法似乎不再可行。是否有新的解决方法或更新UI的更好方法?如果我尝试从事件订阅者更新UI,我将得到此Exception:Theapplicationcalledaninterface
我有一个HTML5应用程序,其中包含一个用于文件系统操作(sqlite、zip存档等)的.winmd组件。在我升级到2013.4之后,这个组件突然停止工作了。Javascript仍然可以看到所有类和函数,但是当我尝试调用它们中的任何一个时,我得到“WinRT:类未注册”异常。完整的VS重新安装没有帮助。也没有升级到社区版本。此行为在台式机(8.1pro)和笔记本电脑(win8.1单一语言)上均重现我花了2天时间试图找出问题所在,我发现一旦组件包含任何异步事件(例如await/async或只是Task.Delay(100)),它就会失败所以我担心的是……这是怎么回事?我哪里错了,我该怎么
场景:我正在尝试将C++应用程序迁移到WinRT/MetroStyle。此应用程序使用ATL/COM对象,该对象通过类IDispatchImpl实现IDispatch接口(interface)但是,根据MSDNIDispatchImpl不适用于MetroStyle应用程序。我的ATL/COM类如下所示:classMyATLClass:publicIDispatchImpl,publicCComObjectRoot,publicCComCoClass{...}问题:WinRT中是否有IDispatchImpl的替代品?例如,替换可能涉及派生自不同的类并丢弃我的IDL文件。我的最终目标只是
我正在尝试让SQLite与WinRT兼容。我已将WinRT不支持的旧调用切换为新调用。现在我已经编译了项目,我想验证它没有使用任何旧的API调用或不受支持的调用。WindowsAppCertKit似乎只能验证实际的Metro应用程序。如何验证WinRTDLL?编辑:应用认证套件中似乎存在错误。它似乎没有验证引用的dll。如果您将代码移至应用程序,它会对其进行验证。此外,对于Metro不支持的调用,编译时错误并不总是存在。我需要设置一个标志来在编译时捕获这些错误吗?有问题的文件是一个C文件,仅为此文件关闭了WinRT扩展。 最佳答案
关于新的WinRTAPI和以它为目标的语言(直接或间接)以及它们与XAML的关系,我不明白。.NET语言(C#、VB.Net、F#)可用于构建XAMLMetro在“受API限制”的CLR上运行的应用程序又在WinRT上运行C++可用于构建直接在WinRTAPI的顶部我的问题是-方案1中的XAML是否先转换为BAML,然后转换为MSIL(按照传统.NET应用程序),或者是否有新的机制?如果不是,那么构建非托管应用程序的编译器如何将相同的XAML转换为native指令?这两种情况是否使用相同的编译策略得到解决?如果是,那又如何? 最佳答案
我一直在尝试使用C#,C++/CX和C++中的WRL来测试WinRT组件。到目前为止,即使与COM相比,我还是做了所有尝试的事情,但有些东西已经改变并且令人困惑或沮丧。我正在尝试的最后一件事是到目前为止,我无法做的是COM的基本体系结构模式。我只想创建WRL组件的实例,而不在使用该组件的项目中引用DLL。据我所知,这是COM的基本行为,提供COM的CoClass的GUID,使用程序仅了解接口(interface),并且CoCreateInstance将动态加载COM并创建连接到您请求的接口(interface)的实例。我找不到使用WRL的方法。我定义了一些简单的接口(interface
什么是C#方法的等价物Guid.NewGuid()在C++WinRT中? 最佳答案 相信你找http://msdn.microsoft.com/en-us/library/windows/desktop/ms688568%28v=vs.85%29.aspxCoCreateGuid(); 关于c++-如何在WinRT中用C++创建新的GUID?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/quest
是否有一个新的宏来确定应用程序是否在WinRT上运行?当我使用LoadLibrary时,如果有一个宏可以将对LoadLibrary的所有调用替换为对LoadPackagedLibrary的所有调用,那就太好了。.我对文档的理解是正确的,因为我可以通过LoadPackagedLibrary加载任何DLL(只要它在我的包中),对吧?!(只要该DLL不使用列入黑名单的API...) 最佳答案 我最近更新到VisualStudio2012,我想我找到了问题的答案:在Microsoftheader中,宏WINAPI_FAMILY_PARTIT
我们有一个WinRT组件,其业务逻辑在内部处理C++unsignedchar缓冲区。我们现在想从C#byte[]中提供该缓冲区。完美的边界是什么样的,即,下面的SomeWinRTFunction函数的签名是什么?voidSomeWinRTFunction(somethingcontainingbytesfrommanagedland){IVectorsomethingusingthebytesgivenfrommanagedland;}这种问题对于搜索引擎来说似乎太新了...... 最佳答案 在C++部分,该方法应接受uint8平台
我想从C或C++对WinRT对象进行动态(即基于反射)调用。我将假设我在运行时有可用的winmd文件,这样我就可以找出这些方法是什么以及它们采用什么参数。在OLE自动化中,IDispatch随后可用于进行实际调用。但是,WinRT对象不支持IDispatch。我怎样才能打电话?根据处理器的COM调用约定,我是否需要某种允许动态传递参数的FFI库?或者我真的需要“静态”类/结构声明(对于C/C++)吗?编辑:目标系统是一个metro风格的应用程序。这排除了涉及禁用API的解决方案。 最佳答案 当然可以构建您所描述的内容-在幕后,这正是