小编vkr*_*rzv的帖子

string.ToLower和TextInfo.ToLower之间的区别

两者有什么区别?我什么时候应该使用它们?

.net c#

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

是否存在std :: time_t未表示为unix时间的平台?

来自http://www.cplusplus.com/reference/ctime/time_t:

time_t的

能够表示时间的基本算术类型的别名,如函数时间返回的那些.

由于历史原因,它通常被实现为表示自UTC时间1970年1月1日00:00(即,unix时间戳)以来经过的秒数的整数值.尽管库可以使用替代时间表示来实现此类型.

可移植程序不应直接使用此类型的值,但始终依赖于对标准库元素的调用将它们转换为可移植类型.

有人知道这样的实现的例子,其中std :: time_t没有表示为unix时间吗?

c++ time implementation

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

boost :: split vs boost :: iter_split之间的区别

boost::splitboost::iter_split功能有什么区别?

c++ boost

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

将服务器UTC时间转换为客户端本地时间

我从服务器本机(C++)应用程序获得UTC格式的FILETIME结构.在托管(C#)客户端,我需要将其显示为客户端(!)本地时间.我是否需要有关于服务器时区的FILETIME传输信息才能完成此任务?或者这些信息已经包含在UTC格式的FILETIME中?

c# c++ timezone filetime

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

如何强制从本机线程访问托管代码的正确AppDomain?

我有一个用C#编写的MMC管理单元.似乎MMC为每个托管管理单元创建了一个单独的AppDomain.它还有一个默认的AppDomain,用于托管系统dll,如mscorlib.dll,Microsoft.ManagementConsole.dll等.

我的管理单元有一个本机C++ DLL,它可以创建可以通过Interop调用托管代码的本机线程.问题是当本机线程访问我的托管代码时,它尝试在默认的AppDomain中执行它,而不是我的管理单元.

有没有办法强制本机线程"切换"到管理单元的AppDomain?我无法重写本机dll.我唯一能做的就是在C++/CLI中实现一些这个dll会调用的C++接口.

最小,完整和可验证的示例如下.要编译它,请在Visual Studio中选择C++/CLR控制台应用程序项目类型.

#include <Windows.h>
#include <msclr/gcroot.h>

using namespace System;

#pragma unmanaged

class IService
{
public:
    virtual void Operate() = 0;
};

DWORD __stdcall MyNativeThread(LPVOID arg)
{
    IService* service = (IService*)arg;

    service->Operate();

    return 0;
}

void StartNativeThread(IService* service)
{
    CloseHandle(CreateThread(NULL, 0, &MyNativeThread, service, 0, NULL));
}

#pragma managed 

public ref class ServiceManagedImpl
{
public:
    void Operate()
    {
        System::Console::WriteLine("ServiceManagedImpl::Operate: Domain: {0}", System::AppDomain::CurrentDomain->Id);
    }
};

class ServiceImpl : public IService
{
public:
    ServiceImpl(ServiceManagedImpl^ managedImpl)
    {
        m_managedImpl = managedImpl;
    } …
Run Code Online (Sandbox Code Playgroud)

.net c# interop c++-cli appdomain

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

派生接口中的新方法声明

我最近研究了一些代码并遇到了一个派生接口,该接口声明new了与基本接口具有完全相同名称和签名的方法:

public interface IBase
{
    Result Process(Settings settings);
}

public interface IDerived : IBase
{
    new Result Process(Settings settings);
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有理由这样做.根据我的理解,我可以安全地删除后一种方法声明并IDerived留空而不会破坏使用它的任何代码.我错了吗?

PS如果这很重要,这些接口声明也具有以下属性:ComVisible(true),InterfaceType(ComInterfaceType.InterfaceIsIUnknown)Guid(...).

.net c# com-interop

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

调试"服务无法启动"Windows Installer错误

我有一个用WiX编写的简单msi安装本机NT服务.在我对msi进行了一些更改后,它在StartServices标准操作失败,错误"服务无法启动,验证您有足够的权限".如果我按Ignore并手动启动服务,则它会成功启动.问题绝对不在于权限不足.如何诊断/调试此类问题?Windows Installer的详细日志似乎不包含任何有用的信息.

windows debugging service windows-installer wix

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