小编Dav*_*vid的帖子

使我的COM程序集调用异步

我刚刚"获得"在我目前的工作中维护用C#编码的遗留库的特权.

这个dll:

  • 公开使用Uniface制作的大型遗留系统的方法,除了调用COM对象之外别无选择.
  • 用作此遗留系统与另一个系统API之间的链接.
  • 在某些情况下,使用WinForm作为其UI.

更直观,据我了解组件:

*[Big legacy system in Uniface]* == [COM] ==> [C# Library] == [托管API] ==> *[Big EDM Management System]*

问题是:这个C#库中的一个方法运行时间太长而且我"应该"使它异步!

我习惯了C#,但根本不习惯COM.我已经完成了并发编程,但是COM似乎增加了很多复杂性,到目前为止我所有的试验都结束了:

  • 崩溃时根本没有错误消息
  • 我的Dll只能部分工作(只显示部分UI,然后关闭),但仍然没有给我任何错误

我没有关于如何在COM DLL中处理线程的想法和资源,我将不胜感激任何提示或帮助.

到目前为止,代码的最大部分我已经改变,使我的方法异步:

// my public method called by the external system
public int ComparedSearch(string application, out string errMsg) {
  errMsg = "";
  try {
    Action<string> asyncOp = AsyncComparedSearch;
    asyncOp.BeginInvoke(application, null, null);
  } catch (ex) {
    // ...
  }
  return 0;
}

private int AsyncComparedSearch(string application) {
  // my actual method …
Run Code Online (Sandbox Code Playgroud)

c# com multithreading

10
推荐指数
1
解决办法
463
查看次数

使用observable插件创建双向自定义绑定

这个问题的线索似乎很难找到,我开始认为它必须是显而易见的(我缺少一些东西),无用或不可能:

我通过observables(ko.observables())得到了敲门的双向绑定.然而,所有这些括号都是真正的痛苦.因此,当我使用Durandal时,我会observable试试插件:http://durandaljs.com/documentation/Binding-Plain-Javascript-Objects.html

(为了记录,我也试过这个:http://blog.stevensanderson.com/2013/05/20/knockout-es5-a-plugin-to-simplify-your-syntax/)

两者都与淘汰赛的value绑定工作正常.

我的问题是我的应用程序有多个敲除自定义绑定,我不知道如何更新这些自定义绑定中不是ko.observable()的可观察属性.

在我的绑定中,我通常会这样做:

ko.bindingHandlers.testBinding = {
    init: function(element, valueAccessor) {
        var myObservable = valueAccessor();
        // here I could detect if it's an observable or a POJO
        // ... how to know if it's a property ???

        $(element).blur(function() {

            // ... how to write to myObservable if it's a writable property
            // ... and not a ko.observable() ???
            myObservable($(element).val());

        });

    },
    update: function(element, valueAccessor) {
        $(element).val(ko.unwrap(valueAccessor()));
    } …
Run Code Online (Sandbox Code Playgroud)

knockout.js durandal

2
推荐指数
1
解决办法
847
查看次数

标签 统计

c# ×1

com ×1

durandal ×1

knockout.js ×1

multithreading ×1