小编jav*_*red的帖子

声明枚举在数组中使用?

对不起,可能很容易问题.

我需要一系列标志

boolean[20] isTownVisited
Run Code Online (Sandbox Code Playgroud)

但是在它中使用int并不方便,我想使用字符串:

 isTownVisited[Town.Milan] = true;
Run Code Online (Sandbox Code Playgroud)

要么

 return isTownVisited[Town.Rome]
Run Code Online (Sandbox Code Playgroud)

我试图宣布枚举

enum Town {Milan, Rome, Florence, Napoli}
Run Code Online (Sandbox Code Playgroud)

但我仍然不能用它来索引我的布尔数组.如何解决这个问题,我可以这样写:

enum Town {Milan = 0, Rome = 1, Florence = 2, Napoli = 3}
Run Code Online (Sandbox Code Playgroud)

java arrays enums

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

如何在同一台机器上打开2个命名管道?

我想在我的机器上运行我的程序的两个实例.每个实例都需要localhost命名管道:

_host = new ServiceHost(typeof(ManagementConsole),
            new Uri[]
            {
                new Uri("net.pipe://localhost")
            });

_host.AddServiceEndpoint(typeof(IManagementConsole),
     new NetNamedPipeBinding(),
     "PipeManagementConsole");

_host.Open();
Run Code Online (Sandbox Code Playgroud)

在我使用的程序的另一个例子中 PipeManagementConsole2

所以客户应该使用net.pipe://localhost/PipeManagementConsolenet.pipe://localhost/PipeManagementConsole2.

但是,Windows不允许我的程序的第二个实例运行,它声称net.pipe://localhost已经在使用(它是),我该如何解决这个问题?

c# wcf

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

如何在两台计算机之间共享svn存储库

在我的工作站上我有SVN存储库.我在工作站和笔记本电脑上都使用它.在工作站上,我可以在本地访问存储库,但在笔记本电脑上,我必须通过互联网连接到访问存储库.这不方便,因为我不能在飞机/火车和其他没有互联网的地方工作(我想比较修改等等).

在笔记本电脑上安装svn存储库的COPY会更舒服,但我需要最新版本.

最简单的解决方案是将svn存储库存储在云中,如https://www.dropbox.com,以便随时在一台计算机上更新存储库,它将在另一台计算机上更新.

但由于安全原因,我不想使用Dropbox,我不想在互联网的某个地方存储机密文件,而且可能是未加密的.

我还可以做些什么?我想自动同步两个存储库副本,但我不想将其存储在Internet中.每次互联网出现时,笔记本电脑本身应该从工作站"获取"最新的副本,每次在笔记本电脑上更新存储库时,它应该自动对工作站进行新的修订?

我知道SVN不是为了做这些事情而设计的,但由于我是存储库的唯一提交者而我只有工作站和笔记本电脑,我们可以认为冲突永远不会发生......

svn repository

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

如果我需要按特定顺序执行事件处理程序怎么办?

我有事件,例如:

public event EventHandler<NewReadyMessageEventArgs> NewReadyMessage
Run Code Online (Sandbox Code Playgroud)

问题是我需要为它添加两个处理程序,我需要先执行一个(因为最后一个依赖于第一个).即我需要一定的处理程序执行顺序.

我知道实际上处理程序将逐个执行,所以我只需要按正确的顺序附加它们,但这将是非常错误的设计.

我想创建单独的处理程序并附加它.在这个处理程序中,我只想按正确的顺序执行我的两个处理程序.你怎么想,你会建议什么?

c#

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

我应该同步对干扰器 Next/Publish 方法的访问吗?

我没有提供完整的列表,因为下面的代码对于那些熟悉 Disruptor 的人来说已经足够了。问题是调用NextPublish方法是否是线程安全的。下面的例子中哪一个是正确的?请注意,Attach可以同时从不同线程调用。我有多个消费者。

例1. 锁定一切:

    private object attachLock = new object();

    // can be called from parallel threads
    public void Attach(OrdersExecutor oe)
    {
        lock (attachLock)
        {
            long sequenceNo = ringBuffer.Next();
            ringBuffer[sequenceNo].Value = oe;
            ringBuffer.Publish(sequenceNo);
        }
    }
Run Code Online (Sandbox Code Playgroud)

例2. 锁定下一个:

    private object attachLock = new object();

    // can be called from parallel threads
    public void Attach(OrdersExecutor oe)
    {
        long sequenceNo;
        lock (attachLock)
        {
            sequenceNo = ringBuffer.Next();
        }
        ringBuffer[sequenceNo].Value = oe;
        ringBuffer.Publish(sequenceNo);
    }
Run Code Online (Sandbox Code Playgroud)

例3. 无锁

    private object …
Run Code Online (Sandbox Code Playgroud)

c# disruptor-pattern

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

如果没有设置编译符号,如何排除方法?如何传递可变数量的参数并在函数体中格式化它们?

我为记录编写了自己的简单类.我明白我最好使用某种类型的库(boost.log,log4cpp?)但是让我们讨论我的简单类:

#include "stdafx.h"
#include "Logger.h"


Logger::Logger(std::string fileName)
{
    logFile.open(fileName);
}


Logger::~Logger(void)
{
    logFile.close();
}


void Logger::Error(std::string message) {
    logFile << message << std::endl;
}

void Logger::Debug(std::string message) {
    logFile << message << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
  1. 我希望我的方法接受可变数量的参数,所以我可以传递这样的参数"Error code: %x", code.怎么做?
  2. Debug如果LOG_DEBUG没有设置编译符号,我想要排除方法.在C#中,我可以[Conditional("LOG_DEBUG")]在方法声明之前添加,但现在在c ++中这样做?

upd关于1我已经尝试了它并且它的工作原理:

void Logger::Debug(std::string message, ...) {
va_list arglist;
fprintf(pFile, message.c_str(), arglist);
Run Code Online (Sandbox Code Playgroud)

c++

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

在SetUnhandledExceptionFilter的处理程序中如何打印stacktrace?

当发生未处理的异常时,我想打印堆栈跟踪而不是仅仅终止.我试过这样做SetUnhandledExceptionFilter:

SetUnhandledExceptionFilter(UnhandledException);
    ...
LONG WINAPI UnhandledException(LPEXCEPTION_POINTERS exceptionInfo)  
{  
    printf("An exception occurred which wasn't handled!\nCode: 0x%08X\nAddress: 0x%08X",   
        exceptionInfo->ExceptionRecord->ExceptionCode,  
        exceptionInfo->ExceptionRecord->ExceptionAddress);
    return EXCEPTION_EXECUTE_HANDLER;  
}
Run Code Online (Sandbox Code Playgroud)

我发现这个代码工作正常.但是也有因为没有另外的信息ExceptionCode,并ExceptionAddress在系统"事件查看器"打印反正.如果可以打印完整的堆栈跟踪,那么我可以确定发生异常的确切位置?

我发现此代码https://code.google.com/p/m0d-s0beit-sa/source/browse/src/main.cpp?r=9ceb4fec21d647b169c72851d7882bef2b9c5a8a它部分解决了我的问题.仅打印出现异常的方法.但是不打印异常类型和行号.

c++ winapi

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

我应该在我的MVVM应用程序中使用Microsoft.Practicies.Unity.IUnityContainer吗?

Jason Dolinger在他的视频中(现在热门)www.lab49.com/files/videos/Jason%20Dolinger%20MVVM.wmv(从0.59到1.04)使用这样的代码:

public partial App: Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
        IUnityContainer container = new UnityContainer();
        RandomQuoteSource source = new RandomQuoteSource();
        container.RegisterInstance<IQuoteSource>(source);

        WatchList window = container.Resolve<WatchList>();
        window.Show();
    }
}
Run Code Online (Sandbox Code Playgroud)

他使用我无法找到的IUnityContainer类.据我所知,我们只是创建了一个窗口(所以container.Resolve调用可以替换new WatchList(...,也可以用某种方式RandomQouteSource作为实现关联IQouteSource,但是我不清楚如何在以后使用它.

问题是:

  • 如何在MVVM应用程序中创建主Windows,您是否也使用IUnityContainer?
  • 一般来说它是好的技术吗?它是众所周知的吗?这是做这些事情的默认方式吗?我有什么替代品?
  • 我在哪里可以找到Microsoft.Practicies.Unity.dll?

c# wpf dependency-injection unity-container mvvm

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

对于一般的网络问题,我可以使用什么例外?

在我的情况下,服务器不可用,因此我无法读取客户端的数据,因此我想抛出一个异常。我应该抛出什么异常?我不想为这种情况创建自己的异常类,因为程序中有很多不同的情况。

可能存在某种“一般”异常,例如“ NetworkProblem”或什至只是“ Problem”之类的东西?

我不需要任何特定的东西,只是消息的例外。

c#

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

如何从FIFO队列返回最新的对象而不删除它

Peek 返回队列开头的对象而不删除它.

如果我想对"队列中的最后一个对象"做同样的事情怎么办?即"最新的"(刚刚插入的那个).

我已经尝试queue.Reverse().Peek()但是这不会编译.

c#

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