我可以在 Windows 10 (UWP) 应用程序中从 Web Worker 调用自定义运行时组件吗

Can I call a custom runtime component from a web worker in a Windows 10 (UWP) app

我们计划在 JavaScript 中为 Windows 10 编写通用 Windows 平台应用程序。

我们还需要编写一些自定义运行时组件,最有可能使用 C#。

我知道可以从主 UI 线程调用自定义运行时组件。现在的问题是:

可以从 Web Worker 中调用自定义运行时组件吗?

是否需要一些特殊的东西configuration/settings/api?

谢谢! 娟

is possible to call a custom runtime component from within a Web Worker?

我做了一个基本的Demo。自定义运行时组件适用于 Web Worker。

我做了什么:

  1. 我创建了一个自定义运行时组件并在我基于 js 的 UWP 项目中引用它。然后我将 Class1.cs 修改为 Example.cs 如下所示:

    public sealed class Example
    {
        public static string GetAnswer()
        {
            return "This is Answer";
        }
    }
    
  2. 在我基于 js 的 UWP 项目中,我修改了 main.js,如下所示:

    // Your code here!
    (function () {
        "use strict"
        var w;
        if (typeof Worker !== "undefined")
        {
            var w = new Worker("ms-appx:///js/webWorkerDemo.js");
            w.onmessage = function (evt)
            {
                document.getElementById("myContent").innerText = evt.data;
                w.terminate();
            }
        }
    })();
    

    并将 myContent div 放入 index.html:

    <body>
        <div id="myContent"></div>
        <script src="js/main.js"></script>
    </body>
    
  3. 我在js文件夹下添加了webWorkerDemo.js,除了调用runtime组件的GetAnswer方法和postMessage:

      var str = MyRuntimeComponent.Example.getAnswer();
      postMessage(str);
    

应用程序运行时,"This is Answer" 会在应用程序中正确显示。所以在Web Worker中使用自定义运行时组件应该没有问题。

这是完整的示例:WinJSSample