问题列表 - 第20331页

C#中的跨线程事件处理

我正在使用一个框架,该框架在一个单独的线程中运行自己的事件调度程序.框架可能会生成一些事件.

class SomeDataSource {

    public event OnFrameworkEvent;

    void FrameworkCallback() {

        // This function runs on framework's thread.

        if (OnFrameworkEvent != null)
            OnFrameworkEvent(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想将这些事件传递给Winforms线程上的Winforms对象.我显然检查InvokeRequired并在必要时将其发送到Winforms线程.

class SomeForm : Form {

    // ...

    public void SomeAction(SomeArgs args) {
        if (InvokeRequired) {
            BeginInvoke(new Action(SomeAction), args);
            return;
        }

        // ...
    }

}
Run Code Online (Sandbox Code Playgroud)

现在事件可能在表单处于关闭状态时传递,这会导致各种问题,因此我从Winforms线程上的框架事件源取消注册表单的事件处理程序,如下所示:

var form = new SomeForm();
var src = new SomeDataSource();

// ...

src.OnFrameworkEvent += form.SomeAction;
form.Closing += (sender, eargs) => src.OnFrameworkEvent -= form.SomeAction;
Run Code Online (Sandbox Code Playgroud)
  1. 现在,这种方法是线程安全的吗?如果表单处于关闭状态,并且外部线程调用BeginInvoke,那么如果表单关闭,调用是否仍会排队等待执行?(这意味着我仍然有机会遇到同样的问题) …

c# multithreading event-handling winforms

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

.NET中是否有内置的日志框架?

简单的问题:看标题.我正在使用.NET 3.5.

详细说明:我正在构建一个插件,它将在运行时加载到第三方应用程序中.主应用程序使用log4net作为其日志框架.但是,它不会公开根记录器,因此我们无法记录.(我已经向上游开发者提出了这个问题,他们将在未来的版本中修复它,所以在此期间我需要提出其他的东西)

该系统的另一个限制是,当它收到通知它应该加载本地系统上不存在的插件时,它将从连接的服务器(如果它存在于服务器上)下拉该插件,但是它只能拉下插件所在的组件.这意味着没有外部程序集,也不能使用插件部署.config或任何其他文件.

这让我只有内置的.NET程序集和插件程序集中的所有内容.但是,我不想通过建立自己的另一个记录框架来重新发明轮子,所以我想知道这个问题的最佳方法是什么.

我更喜欢登录到文件,并希望避免将内容转储到Windows事件日志中.

.net logging log4net

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

NSURLCache与自动释放的对象崩溃,否则泄漏

CSURLCache旨在缓存资源以进行脱机浏览,因为NSURLCache只将数据存储在内存中.

如果cachedResponse在返回应用程序崩溃之前自动释放,如果没有,则只是泄漏对象.

任何可以照到这上面的光都会非常感激.

请注意stringByEncodingURLEntities是一种类别方法NSString.

@interface CSURLCache : NSURLCache {} @end

@implementation CSURLCache

- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request
{
    NSString *path = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:[[[request URL] absoluteString] stringByEncodingURLEntities]];

    if ([[NSFileManager defaultManager] fileExistsAtPath:path])
    {
        NSData *data = [[NSData alloc] initWithContentsOfFile:path];
        NSURLResponse *response = [[NSURLResponse alloc] initWithURL:[request URL]
                                                            MIMEType:nil
                                               expectedContentLength:[data length]
                                                    textEncodingName:nil];

        NSCachedURLResponse *cachedResponse = [[NSCachedURLResponse alloc] initWithResponse:response
                                                                                       data:data];
        [response release];
        [data release];

        return cachedResponse;
    }

    return nil;
}

@end
Run Code Online (Sandbox Code Playgroud)

更新:向Apple提交雷达后,似乎这是一个已知问题(雷达#7640470).

cocoa objective-c autorelease nsurlcache

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

使用distribute/setuptools创建符号链接(或运行脚本)?

作为项目设置过程的一部分,我需要将其中一个软件包符号链接到指定的目录,以便init.d脚本可以找到它.有没有办法将此作为后处理命令添加到setup()?我甚至愿意创建另一个创建链接的文件并将其setup()作为"运行这些"的一些kwarg列表的一部分传递(如果存在这样的选项).

setup(
    ...
    packages = find_packages('src'),
    package_dir = {'': 'src'},
    install_requires = ...,
    data_files = [('/etc/init.d', ['scripts/foo'])],
    ...
)
Run Code Online (Sandbox Code Playgroud)

foo脚本期望其中一个包与src/其他地方的符号链接(例如,不是简单地打开PYTHONPATH).有没有办法实现这一目标?

python symlink setuptools distribute

10
推荐指数
2
解决办法
3772
查看次数

奇怪的Python集和哈希行为 - 这是如何工作的?

我有一个叫做类的类GraphEdge,我希望set通过它tailhead成员在一个集合(内置类型)中进行唯一定义__init__.

如果我没有定义__hash__,我会看到以下行为:

>>> E = GraphEdge('A', 'B')
>>> H = GraphEdge('A', 'B')
>>> hash(E)
139731804758160
>>> hash(H)
139731804760784
>>> S = set()
>>> S.add(E)
>>> S.add(H)
>>> S
set([('A', 'B'), ('A', 'B')])
Run Code Online (Sandbox Code Playgroud)

该组没有办法知道,E并且H是由我的定义是相同的,因为他们有不同的哈希值(这是什么类型的集合用来确定唯一性,据我所知),所以它增加了两种截然不同的元素.所以我定义了一个相当天真的哈希函数,GraphEdge如下所示:

def __hash__( self ):
    return hash( self.tail ) ^ hash( self.head )
Run Code Online (Sandbox Code Playgroud)

现在上面按预期工作:

>>> E = GraphEdge('A', 'B')
>>> H = GraphEdge('A', 'B')
>>> hash(E)
409150083
>>> hash(H)
409150083 …
Run Code Online (Sandbox Code Playgroud)

python hash set

6
推荐指数
3
解决办法
2034
查看次数

通用约束与继承

我正在尝试编写一些代码来帮助单元测试WCF服务.这些服务通过创建代理实例的facade类访问,然后调用代理方法并返回结果; 对于每种代理方法.我希望能够用创建真实服务或虚假服务的东西替换当前的创建代码.

我无法让它工作.我把它归结为以下内容:

using System.ServiceModel;

namespace ExpressionTrees
{
    public interface IMyContract
    {
        void Method();
    }

    public class MyClient : ClientBase<IMyContract>, IMyContract
    {
        public MyClient()
        {
        }

        public MyClient(string endpointConfigurationName)
            : base(endpointConfigurationName)
        {
        }

        public void Method()
        {
            Channel.Method();
        }
    }

    public class Test
    {
        public TClient MakeClient<TClient>()
            where TClient : ClientBase<IMyContract>, IMyContract, new()
        {
            return new MyClient("config");

            // Error:
            // Cannot convert expression of type 'ExpressionTrees.ServiceClient' to return type 'TClient'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么即使MyClient该类派生ClientBase<IMyContract>并实现IMyContract,我也无法 …

c# generics wcf mocking

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

Scala 2.7.7编译器/解释器中的虚假模糊引用错误?

谁能解释下面的编译错误?有趣的是,如果我将方法的返回类型更改get()String,则代码编译得很好.请注意,该thenReturn方法有两个重载:一元方法和一个至少需要一个参数的varargs方法.在我看来,如果调用在这里是模棱两可的,那么它总是模棱两可的.

更重要的是,有什么方法可以解决歧义吗?

import org.scalatest.mock.MockitoSugar
import org.mockito.Mockito._

trait Thing { 
   def get(): java.lang.Object 
}

new MockitoSugar {   
   val t = mock[Thing]  

   when(t.get()).thenReturn("a")  
}
Run Code Online (Sandbox Code Playgroud)

错误:对重载定义的模糊引用,两个方法然后返回特征类型
java.lang.Object,java.lang.Object*)org.mockito.stubbing.OngoingStubbing [java.lang.Object]和方法返回特征OngoingStubbing的特征OngoingStubbing type(java.lang.Object)org.mockito.stubbing.OngoingStubbing [java.lang.Object]匹配参数类型(java.lang.String)when(t.get()).thenReturn("a")

scala compiler-errors

10
推荐指数
3
解决办法
3835
查看次数

c#:如何轻松显示Dictionary <string,int>?

我有一个字典,我想在表单中显示.最简单的方法是什么?

我想要显示一个控件,我可以使用int值进行排序.我已经尝试过DataGridView,但没有任何显示,我一定是做错了...

码:

mDataGridView.DataSource = mWordCount; 
/*Where mWordCount is the Dictionary<string, int> but nothing shows up. (It's a forms-app, not a web-app)*/
Run Code Online (Sandbox Code Playgroud)

c# controls dictionary show

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

如何在JavaScript中用"_"替换字符串中出现的所有"/"?

由于某种原因,该"".replace()方法仅替换第一次出现而不替换其他出现.有任何想法吗?

javascript replace

8
推荐指数
3
解决办法
2万
查看次数

制作USB设备,用Java控制它

我正在考虑用旋钮,按钮和LED制作物理控制器(设备?).我想使用Java与它进行交互(响应旋钮,点亮LED等).我提到Java的原因有两方面:首先,我认识Java 1.其次,我编写了我需要在Java中与其交互的程序的其余部分(尽管有一些方法可以从另一种语言与Java程序对话).

我希望该设备通过USB连接并独立于(计算机)平台.

除了开始阅读Arduino网站之外,我对从哪里开始没有任何想法.这是我最好/唯一的选择吗?有没有更适合与Java通信的东西?

注意:我知道Arduino与Java有关(不确定是什么),但似乎代码必须写在C的子集中.

我将如何开始讨论这个话题?


1 - 请不要笑.

java input-devices arduino

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