小编mik*_*010的帖子

Prism取消订阅订阅令牌不起作用

我使用以下ClassA中的代码订阅和取消订阅prism事件.我遇到的问题是我取消订阅之后,另一个完全不同的类,比如ClassB,使用不同的处理程序注册同一事件,仍然会调用ClassA处理程序.为什么是这样?

我已尝试使用令牌取消订阅以及注册时使用的方法委托,两者都无济于事.

SubscriptionToken _subscriptionToken;

//register subscription + handler
var pevent = GetEventAggregator().GetEvent<PriceSubscriptionEvent>();
_subscriptionToken = pevent.Subscribe(r =>
{
    DataHandler(r);
    return;
}, ThreadOption.BackgroundThread, false, null);

//Unsubscribe
var pevent = GetEventAggregator().GetEvent<PriceSubscriptionEvent>();
pevent.Unsubscribe(_subscriptionToken);
Run Code Online (Sandbox Code Playgroud)

.net c# prism

7
推荐指数
1
解决办法
2291
查看次数

Kafka JDBC 连接器加载所有数据,然后增量

我试图弄清楚如何最初从查询中获取所有数据,然后仅使用 kafka 连接器增量更改。这样做的原因是我想将所有数据加载到弹性搜索中,然后使 es 与我的 kafka 流同步。目前,我首先使用带有模式 = 批量的连接器来执行此操作,然后将其更改为时间戳。这工作正常。

但是,如果我们想将所有数据重新加载到 Streams 和 ES,这意味着我们必须编写一些脚本来以某种方式清理或删除 kafka 流和 es 索引数据,修改连接 ini 以将模式设置为批量,重新启动所有内容,给出是时候加载所有数据,然后再次将脚本修改为时间戳模式,然后再次重新启动所有内容(需要这样一个脚本的原因是偶尔,批量更新会通过我们尚无法控制的 etl 过程来纠正历史数据,并且此过程不会更新时间戳)

有没有人做类似的事情并找到了更优雅的解决方案?

elasticsearch apache-kafka apache-kafka-connect confluent-platform

7
推荐指数
1
解决办法
1949
查看次数

重载方法..为什么基类具有优先权?

在下面的代码中,我有一个重载方法,一个采用ClazzA类型的参数,另一个采用ClazzB类型.在显示的代码中,调用第一个GetDescription方法(以ClazzA作为参数的方法).我想我理解为什么.
我的问题是..如果底层对象的类型是classB(不必检查每个对象并将其转换为clazzB),那么有一种优雅的方法可以使clazzB首先调用?

public class ClazzA
{
    public virtual string Descr { get { return "A"; } }
}

public class ClazzB : ClazzA
{
    public override string Descr { get { return "B"; } }
}

public static class test
{
    public static void Main()
    {
        ClazzA test = new ClazzB();
        GetDecription(test);
    }

    public static void GetDecription(ClazzA someClazz)
    {
        Debug.WriteLine("I am here");
    }

    public static void GetDecription(ClazzB someClazz)
    {
        Debug.WriteLine("I want to be here");
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:"我在这里"

我真的希望调用第二种方法,因为'test'是ClassB类型.我唯一有两个解决方案是:

  1. if(test是ClazzB)返回GetDescription((ClazzB)测试);

要么 …

c# c#-4.0

5
推荐指数
1
解决办法
2915
查看次数

INotifyPropertyChanged.PropertyChanged 已触发,但表单加载后 UI 未更新

ViewModel下面是我的 model和 xaml 绑定的示例。视图模型实现了INotifyPropertChanged. 我遇到的问题是...当 wpf 表单首次加载时,我设置了ActiveStock,我看到 setter 和 getter 都被调用,并且 ui 被更新以正确反映数据。
然而,当我稍后设置StockViewModel.ActiveStock 时,FirePropertyChanged被调用,但我没有看到 getter 被调用,因此 UI 不会更新以反映新数据。你知道这里可能发生什么吗?

我的第二个问题是,当更改时,我是否还需要提高模型的PropertyChanged子属性(PriceData和)?CompanyDataViewModel.ActiveStock

public class Stock
{
    public string Ticker { get; set; }
    public StockData PriceData { get; set; }
    public StockData CompanyData { get; set; }
}
public class StockData
{
    ...
}
public class StockViewModel:INotifyPropertyChanged
{
    private Stock _activeStock;
    public Stock ActiveStock
    {
        get{ return …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml

5
推荐指数
1
解决办法
7270
查看次数

使用另一个数据帧的多索引过滤一个数据帧

我有以下两个数据帧 DF1 和 DF2。我想根据DF2的多索引过滤DF1。

DF1:
                            Value
Date        ID      Name       
2014-04-30  1001    n1        1
2014-05-31  1002    n2        2
2014-06-30  1003    n3        3
2014-07-31  1004    n4        4

DF2 (index = Date, ID, Name):
Date        ID      Name       
2014-05-31  1002    n2        
2014-06-30  1003    n3        

What i would like is this:
                            Value
Date        ID      Name       
2014-05-31  1002    n2        2
2014-06-30  1003    n3        3
Run Code Online (Sandbox Code Playgroud)

为此,我只需使用:

f_df = df1.ix[df2.index]
Run Code Online (Sandbox Code Playgroud)

但是,当这样做时,我得到的是这个(注意元组索引)

                            Value

(2014-05-31, 1002, n2)      2
(2014-06-31, 1003, n3)      4
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现我正在寻找的东西?这是没有元组索引的结果数据帧?

python numpy pandas

5
推荐指数
1
解决办法
1313
查看次数

VSCode 多项目工作区:如何在工作区根目录添加单个文件,例如 .gitignore?

我有以下文件夹结构..其中 _app 和 _infra 是两个不同的项目。然而,工作区的根目录有两个文件,工作区项目文件本身和 .gitignore 文件。每个项目都有自己的 .vscode 文件夹和自己的 .env 文件。整个工作区是 git 中的单个存储库。

my_app_workspace
   - proj1_app/
     - .venv/ (virtual environment)
     - vscode/
       - settings.json
       - launch.json
       - task.json
     - src/
       - config.py
     - .env
     - .env_linux
   - proj1_infra/
     - vscode/
       - settings.json
       - launch.json
       - task.json
     - src/
       - config.py
     - .env
     - .env_linux
  - .git_ignore
  -  my_app_workspace.code-workspace
Run Code Online (Sandbox Code Playgroud)

代码工作区文件如下所示:

{
    "folders": [
        {
            "path": "./proj1_app"
        },
        {
            "path": "./proj1_infra"
        }
    ],
}
Run Code Online (Sandbox Code Playgroud)

这一切都很好,但我想将 .git_ignore 和 my_app_workspace.code-workspace 文件也包含到 vscode 编辑器中,以便我可以轻松地对它们进行修改。我知道我可以使用 '"path": …

python git visual-studio-code

5
推荐指数
1
解决办法
1067
查看次数

当从网络打开解决方案时,Visual Studio经常冻结

我遇到的问题是,当从网络驱动器加载解决方案时,Visual Studio的性能非常糟糕.这似乎不会发生在其他开发人员身上,只有我.

在运行procmon并监视devenv进程之后,我注意到从本地路径打开的项目与网络路径之间的一个关键区别是从网络路径打开的项目正在尝试在路径'C:\上执行操作'CreateFile' Windows\CSC\v2.0.6 \namespace\kpg.apps'1000s的时间.结果是'NAME NOT FOUND'.

有谁知道为什么visual studio正在尝试为从网络打开的项目执行此操作以及我如何解决或至少阻止它尝试此操作?

谢谢

.net c# visual-studio-2010

4
推荐指数
1
解决办法
1409
查看次数

从包含Div和Script标记的html编码字符串动态添加div元素

我有python应用程序将html传递给页面作为json有效负载的一部分.我在该页面尝试做的是解码html并动态地将其添加到DOM.html标记用于包含子脚本元素的Div元素.这是我的代码,打印出解码后的HTML,但实际上并没有执行脚本:

<div  id="parentDiv">
    <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
    <script type='text/javascript'>
        var child_div = "&lt;div id=&#39;testDiv&#39;&gt;\n &lt;script src=&quot;http://d3js.org/d3.v3.min.js&quot;&gt;&lt;/script&gt;\n &lt;script&gt;\n d3.select(&quot;#testDiv&quot;) \n .data([4, 8, 15, 16, 23, 42])\n .enter().append(&quot;p&quot;)\n .text(function(d) { return &quot;I'm number &quot; + d + &quot;!&quot;;\n });\n &lt;/script&gt;\n &lt;/div&gt;";
        decoded = $('<div />').html(child_div).text();
        console.log(decoded);
        $("#parentDiv").append(decoded);
    </script>
</div>
Run Code Online (Sandbox Code Playgroud)

但是,如果我采用上面代码中记录的html并从中创建一个页面,它可以正常执行脚本.这就是解码的html看起来像什么以及我希望动态添加到父div:

   <div  id="parentDiv">
    <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
    <div id='testDiv'>
       <script src="http://d3js.org/d3.v3.min.js"></script>
       <script>
           d3.select("#testDiv")
          .data([4, 8, 15, 16, 23, 42])
          .enter().append("p")
          .text(function(d) { return "I'm number " + d + "!"; });
       </script>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

html javascript python jquery

4
推荐指数
1
解决办法
1519
查看次数

如何在c#中确定匿名函数参数?

鉴于以下代码,

    public T Execute<T>(Func<T> methodParam)
    {
        return methodParam ();
    }

    public void CallMethodsAnonymously<T>()
    {
        T result =  Execute(() => _service.SomeMethod1());
        T result1 = Execute(() => _service.SomeMethod2(someParm1));
        T result2 = Execute(() => _service.SomeMethod3( someParm1, someParm2));
    }
Run Code Online (Sandbox Code Playgroud)

从Execute方法,是否可以检查"methodParam"并提取或确定匿名函数体内的参数数量?例如,是否可以从Execute方法中确定someParam1和someParam2的值?

c# delegates anonymous-methods func

3
推荐指数
1
解决办法
1485
查看次数

.NET:从串口读取数据

我正在使用以下代码读取发送到串行端口(即COM3)的数据:

_serialPort.PortName = "COM3";
_serialPort.BaudRate = 9600;
_serialPort.Parity = Parity.None;
_serialPort.DataBits = 8;
_serialPort.StopBits = StopBits.One;
_serialPort.ReadTimeout = 500;
_serialPort.WriteTimeout = 500;
_serialPort.DataReceived += new SerialDataReceivedEventHandler(_serialPort_DataReceived);
_serialPort.Open();
Run Code Online (Sandbox Code Playgroud)

来自该串行端口的数据是命令,可以是以'\ 0'结尾的任何长度的字符串.我正在寻找有关如何有效读取此类数据的最佳实践.我认为生产者/消费者模式可能是最好的,其中:

  1. 每次DataReceived事件触发时,我都会从端口读取字符串并附加到stringbuffer或其他一些结构
  2. 然后我有另一个线程不断检查字符串缓冲区或char'\ 0'结构,如果找到,解析并删除命令字符串.

这是处理这个问题最有效的方法吗?是否有任何类型的阻塞串行读取功能不依赖于dataReceived事件?

.net serial-port arduino .net-gadgeteer

3
推荐指数
1
解决办法
1865
查看次数