小编Dan*_*iel的帖子

在C#对象上调用C++/CLI删除

我正在将一些代码从C++/CLI转换为C#.其中一个对象在C++/CLI版本中有一个析构函数.其他一些C++/CLI代码在使用后调用此对象上的"delete".

我需要在此对象的C#版本中实现哪种方法,以便那些"删除"继续运行相同的功能(IDisposable.Dispose,终结器或其他我缺少的东西)?

c# c++-cli

11
推荐指数
1
解决办法
7395
查看次数

Android服务 - 多次调用startService并导致值混淆...

我有一些来自我的代码的条件调用,它启动相同的服务,不同的数据值通过bundle传递给该服务.当我检查只满足一个条件时,服务适用于所有条件.但是当2个或更多条件匹配时,它们会调用相同的服务,但捆绑中的数据值不同.问题是当满足此方案时,第一次调用发送的值不会被替换为第二个条件以启动相同的服务.所以服务的反应是错误的.

就是这样

if(some cond)
{
    some values in serivce intent bundle.startService(serviceintent1);
}
if(some cond)
{
    some data in intent bundle.startService(serviceintent1);
}
Run Code Online (Sandbox Code Playgroud)

满足两个条件时,调用startService两次.但我在第二个条件startService调用中从第一个条件获取值.

在这个问题上帮助我......

android android-service

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

regasm RA0000:没有注册类型

我有一个C++/CLI程序集(为Windows 7附带的.NET 3.5编译).程序集标记为ComVisible(true).它包含2个类和1个接口.这两个类都被标记为ComVisible(false)无关紧要.界面标有InterfaceType(ComInterfaceType::InterfaceIsIUnknown)特定的GUID.该接口需要注册.

当我尝试使用注册此程序集时RegAsm.exe AssemplyName,我收到此警告:

RegAsm : warning RA0000 : No types were registered
Run Code Online (Sandbox Code Playgroud)

我的程序集取决于与我的主程序集位于同一目录中的3个其他程序集.其中2个注册没有问题,第3个没有标记为ComVisible.

为什么我无法注册我的集会的任何想法?

.net c++-cli regasm

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

是否可以使用通用图像加载器显示视频缩略图,以及如何?

我正在尝试使用Universal Image Loader(https://github.com/nostra13/Android-Universal-Image-Loader)在网格视图中显示视频缩略图.我能够让它显示图像缩略图没有问题.

我如何在Application类中初始化UIL:

@Override
public void onCreate() {
    super.onCreate();
    initUil();
}

private void initUil() {
    DisplayImageOptions displayOptions = new DisplayImageOptions.Builder()
            .cacheInMemory(true)
            .cacheOnDisc(true)
            .build();

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
            .taskExecutor(ThreadPool.getExecutorService())
            .defaultDisplayImageOptions(displayOptions)
            .build();

    ImageLoader.getInstance().init(config);
}
Run Code Online (Sandbox Code Playgroud)

我如何用它来显示缩略图:

public class MediaCursorAdapter extends SimpleCursorAdapter implements Filterable {
    @Override
    public void bindView(View rowView, Context context, Cursor cursor) {
        String contentUri = getContentUri(cursor);

        ImageView imgThumb = (ImageView) rowView.findViewById(R.id.imgThumb);

        ImageLoader.getInstance().displayImage(contentUri, imgThumb);
    }
}
Run Code Online (Sandbox Code Playgroud)

为简单起见,省略了一些代码.contentUri可以是图像URI或视频URI,在两种情况下都是形式content://...

是否可以使用此库从视频内容URI中显示视频缩略图?怎么样?

video android image universal-image-loader

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

Ace选择Firefox中焦点编辑器中的所有文本

我有一个嵌入Bootstrap 3模式的Ace编辑器.在显示模态之前,我在编辑器中设置了这样的值:

var editor = ace.edit(aceEditorId);
editor.session.setValue(val, -1); // set value at document start
editor.session.selection.clearSelection();
Run Code Online (Sandbox Code Playgroud)

我还有一个"显示"的事件处理程序,用于调整编辑器的模式:

$(editSnippetSelector).on("shown.bs.modal", function () {
        var editorId = getSnippetEditorId();
        var snippetEditor = ace.edit(editorId);
        snippetEditor.resize();
Run Code Online (Sandbox Code Playgroud)

当我专注于Firefox中的编辑器时,所有编辑器文本都会被选中.我无法通过单击移动光标或删除选择.我只能通过按退格键或其他键(例如字母或输入键)来删除文本.

这不会发生在Chrome或IE中.

作为一个实验,我也添加了这段代码无济于事:

codeEditor.on("focus", function () {
    codeEditor.getSession().setValue(codeEditor.getSession().getValue());
    codeEditor.clearSelection();
});
Run Code Online (Sandbox Code Playgroud)

我还应该在哪儿看?还有其他人见过类似的行为吗?

更新:

我注意到有一个onSelect函数在ace.js无限循环中被调用.它在2061行:https://github.com/ajaxorg/ace-builds/blob/master/src-noconflict/ace.js#L2061

这是函数的代码:

var onSelect = function(e) {
    if (copied) {
        copied = false;
    } else if (isAllSelected(text)) {
        host.selectAll();
        resetSelection();
    } else if (inputHandler) {
        resetSelection(host.selection.isEmpty());
    }
};
Run Code Online (Sandbox Code Playgroud)

浏览Firefox调试器中的代码表明调用isAllSelected(text)返回true,因此再次引发选择事件.

firefox ace-editor

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

新vs覆盖关键字

我有一个关于多态方法的问题.我有两个类:带有非虚方法的基类,Foo( )它调用它的虚方法Foo (int i) (如下所示:Foo() {Foo(1);})以及覆盖方法的派生类)Foo(int i).

如果我调用Foo()派生类的实例的方法,则演练如下:base Foo() -> override Foo(int i).但是如果我将覆盖方法更改为新的,则演练如下:base Foo -> base Foo(int i).它甚至没有达到新Foo(int i)方法.请解释这些方法的顺序以及它的原因.

using System;
class Program
{
    sealed void Main()
    {
        DerivedClass d = new DerivedClass();
        //Goes to BaseClass Foo() method
        //then goes to Derived Foo(int i ) method
        d.Foo();
    }
}
class BaseClass
{
    public void Foo() { Foo(1); }
    public virtual void Foo(int i) { // …
Run Code Online (Sandbox Code Playgroud)

c# polymorphism overriding

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