小编Ran*_* B.的帖子

MvvmCross:在ViewModel中提升事件的最佳方式?

我目前有一个View(Android Fragment)和一个相应的ViewModel.我现在想在ViewModel中引发一个View可以订阅的事件.

存档的最佳方法是什么?我听说过常规的C#事件(委托)会导致内存泄漏吗?这是WeakSubscribe功能的原因吗?如何将其绑定到事件?

c# mvvmcross xamarin

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

处理传递给TThread.Queue的匿名过程中的局部变量

我有一个程序,它使用一个执行一些工作的线程.线程应通知进度的另一个线程(在本例中为主线程).

如果我使用Synchronize()来执行同步,一切都按预期工作.如果我与主线程同步并发布for-variable并将其放入列表中,则每个值都可以正确打印到我的ListBox中:

procedure TWorkerThread.Execute;
var
  i: Integer;
begin
  inherited;

  for i := 1 to 1000 do
  begin
    Synchronize(
      procedure()
      begin
        FireEvent(i);
      end);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

输出:1,2,3,4,5 ...... 1000

如果我使用Queue()执行同步,则输出不符合预期:

procedure TWorkerThread.Execute;
var
  i: Integer;
begin
  inherited;

  for i := 1 to 1000 do
  begin
    Queue(
      procedure()
      begin
        FireEvent(i);
      end);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

输出:200,339,562,934,1001,1001,1001,1001,1001,1001,1001,1001,1001,[...]

这里发生了什么事?据我所知,匿名程序应该捕获变量"i"?

delphi multithreading pascal

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

我的文档类应该有打印方法还是应该有专用的打印机类?

我想编写一个打印文档的应用程序。

哪种设计会更好?变体A:

class Document
{
    public string Title { get; set; }
    public string Author { get; set; }
    public string Content { get; set; }
    // ...
}

class DocumentPrinter
{
    public void PrintDocument(Document document)
    {
       // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这将提供一个专用的 DocumentPrinter 类,它只进行打印。或者最好将 Print() 方法添加到 Document 类本身,如下所示(变体 B):

public class Document
{
    public string Title { get; set; }
    public string Author { get; set; }
    public string Content { get; set; }

    public void Print()
    {
       // ... …
Run Code Online (Sandbox Code Playgroud)

c# architecture oop

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

ICommand在Mvvm中的原因是什么?

在使用mvvm方法的应用程序中,ViewModel提供一个或多个Command -properties 非常常见.这些属性通常具有ICommandDelegateCommand类型或类似的类型.

我不明白为什么我们在mvvm应用程序中需要这样的方法.提供公共方法并将视图中的操作直接绑定到此公共方法是不够的?

为什么ICommand存在?

c# wpf mvvm icommand

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

复制工作线程的字符串

我有一个主线程(UI线程)和工作线程的应用程序.

主线程将一个大字符串传递给工作线程,然后工作线程根据传递的字符串执行一些工作.

在执行工作线程期间,可能会更改传递的字符串的内容.

有没有办法复制字符串(例如在工作线程的构造函数中)以避免可能的意外并改为处理该字符串副本?

copy()或UniqueString()可以做到吗?

delphi multithreading

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

如何在 Apache Superset 中选择查询作为数据源?

我想在我的图表中选择一个保存的查询作为数据源,但 Superset 只将视图和表显示为数据源。

选择查询作为数据源需要什么?

superset apache-superset

0
推荐指数
1
解决办法
1398
查看次数