问题列表 - 第21453页

如何确保无法重新访问我的主STA COM服务器(C++)?

好吧,我怀疑即使把这个用在文字中,我也会遇到困难,因为我对COM和公寓的理解并不是真的可以胜任工作;-)

我有一个COM进程内服务器/组件(C++),它包含一些遗留代码.由于此遗留代码的限制,我需要确保COM组件的方法是:

  1. 只调用单个线程.
  2. 这对于服务器的所有实例始终是相同的线程.
  3. (我后来才意识到)没有可重入的电话.

我通过使用ThreadingModel =""注册服务器来实现的前两个.

第三个是我甚至遇到的一个问题.

服务器正由多线程客户端使用,我无法控制.它在不同的线程上创建服务器/组件的多个实例并调用它们的DoSomething()方法.

这导致选择挂起和崩溃行为,我看到堆栈跟踪在主STA线程上包含对DoSomething()的两次调用,但是对于服务器的不同实例.

我最初甚至不认为这是可能的,但我现在有一个部分理解,我需要知道是否/如何防止它.

我的阅读建议我可能需要以某种方式使用IMessageFilter,但我不确定这是否可以在服务器端完成,或者需要由客户端完成.

有人可以帮忙吗?

请注意我希望看到COM级别是否有任何答案,而不是寻找有关更改服务器代码与遗留代码交互方式的建议(例如,通过在自己的线程中运行遗留代码并实现我自己的代码) (非COM)将来自服务器的所有实例的调用编组到该线程上).

c++ com winapi

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

如何获取事务插入的行数

我必须管理一个日志,我必须看到事务插入的行数.有没有办法动态地做到这一点?

sql-server sql-server-2005

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

私人/公共标题示例?

有人可以举个例子说明公共标题和私有标题是如何工作的吗?我已经在网上做了一些阅读,但我似乎找不到有关示例代码的有用信息.我被告知我应该使用私有标头来分隔我的代码的公共和私有部分,以创建静态库.经过一番阅读后,我对它是如何工作有了一个大概的了解,但我真的很感激一个很好的例子让我开始.具体来说,我不太明白的是如何将接口函数放在我的公共头文件中,私有变量/函数放在我的私有头文件中?谢谢!

编辑:

也许我没有正确处理我的问题,但我的意思是,例如,我有myMath.h和myMath.cpp,而myMath.h有:

class myMath{
public:
    void initialise(double _a, double _b);
    double add();
    double subtract();

private:
    double a;
    double b;
};
Run Code Online (Sandbox Code Playgroud)

myMath.cpp具有函数的实现.我怎样才能使myMath.h只有三个公共函数,而私有变量在另一个文件中定义(例如myMath_i.h),这三个文件就是这样我创建静态库之后用户只需要myMath.h.这也意味着myMath.h不能#include myMath_i.h.所以类似于:

myMath.h:

class myMath{
public:
    void initialise(double _a, double _b);
    double add();
    double subtract();
}
Run Code Online (Sandbox Code Playgroud)

和myMath_i.h:

class myMath{
private:
    double a;
    double b;
}
Run Code Online (Sandbox Code Playgroud)

当然那是不可能的,因为那时我将重新定义myMath类......

c++ header private-header

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

Magento:如果父类别为空,则显示来自childcategories的产品

我有以下类别

汽车部件(0)轮胎(0)轮辋(5)

现在在产品列表中显然汽车零件轮胎列表返回0产品.但对于用户来说这是一种尴尬.如果某个类别为空,是否可以显示子项?

亲切的问候

php magento e-commerce

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

在apache中添加标头

我在这台服务器上有apache和很多图像.E. g.:http://test.com/images/abc.jpg 我希望有可能这样做:如果用户像这样的url http://test.com/images/download/abc.jpg必须添加标头Content-Disposition: attachment; filename="abc.jpg".我怎么能这样做?

apache header

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

本地化.NET; 使用ResourceManager时的后备语言

最近我正在深入研究.NET的本地化.基本上,我学习了如何自定义表单(使用Language和Localizable属性),然后相应地更改文化.

但是,我发现在将我的硬编码英文字符串迁移到自动生成的资源文件中时,使用.GetString("Key") - 好吧,我们只是说它不开心:P.

我决定将一组独立的resx文件专门用于硬编码字符串翻译.他们遵循[name]的惯例/要求.[culture-code] .resx.我为每种相关语言制作了这些; 例如,appstrings.de.resx(德语)和appstrings.resx(作为不变基线).

为了利用这些新资源,我创建了一个ResourceManager和Resource Set实例

Dim resManager As New ResourceManager("LanguageTest.appstrings", Assembly.GetExecutingAssembly)
Dim resSet As ResourceSet = resManager.GetResourceSet(My.Application.UICulture, True, True)
Run Code Online (Sandbox Code Playgroud)

使用当前的UI文化(例如,德语)设置

My.Application.ChangeUICulture("de")
Run Code Online (Sandbox Code Playgroud)

原始问题

除非resSet.GetString("密钥"),在明确定义appstrings.de.resx,它会返回一个空字符串.无论如何,我可以让它回溯appstrings.resx(其中"Key"确实存在),我认为这将是默认基线?

更新

Rhapsody在下面提出了一个建议,而实际的提示本身并不起作用,事实上它确实引发了一个有趣的点,使用resManager.GetString("Key")而不是resSet.GetString("Key").到目前为止,这似乎没有任何缺陷.也就是说,返回专用语言文件中存在的值,而当通过单个键访问时,"缺失"值会回退到默认文化.

后续问题

唯一剩下的问题是使用ResourceManger而不是缓存的ResourceSet对性能的影响是否会有害?

vb.net resources localization embedded-resource

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

使用VSTO删除Word 2007中段落后的间距

我正在使用C#创建和填充Word 2007表.当我在Word中查看结果时,每个单元格在文本后面都附加了额外的垂直空间.在Word中,这可以通过"页面布局"/段落/间距进行调整,其中初始值为10pt.

---------------------------------------------------
| Text...     | Text....  | More text...          |
|             |           |                       | <- Extra spacing
---------------------------------------------------
|             |           |                       |
Run Code Online (Sandbox Code Playgroud)

如何使用VSTO更改?

我试图记录一个宏,希望在VB代码中得到一些答案 - 它似乎没有响应间距值的变化.

我无法在MSDN上的VSTO文档中找到任何相关内容.

编辑: 使用Word模板,我可以标记我正在填充的区域并将间距设置为0.然后通过我的表继承 - 因此它现在可以使用.但是,能够从C#控制间距并且不依赖于Word中的继承会更好.

c# vsto ms-word

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

我怎么能用.NET学习我的客户端IP?

我需要从whatismyip.com我的客户端IP.但是我认为正则表达式模式不正确?你能帮我这个模特吗?

.net c# network-programming visual-studio

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

查找vim中的c ++文档

我使用vim编写c ++代码.

很多时候,我发现自己在浪费时间(和流动性)看起来像琐碎的事情:

是std :: string.substring它需要(开始,长度)或(开始,结束).

这通常导致打开浏览器; WAID; 在google上搜索; 第一个链接无用,尝试第二个链接; 好的,完成了.

其他人如何在vim中这样做?有没有一个很好的*.tgz我可以下载标准功能文档,并以某种方式在vim中引用它们?

谢谢!

c++ vim doc

28
推荐指数
4
解决办法
6212
查看次数

XLINQ:xml中缺少元素

我有以下xml

<students>
  <student>
    <id>12</id>
    <name>Mohsan</name>
  </student>
  <student>
    <id>2</id>    
  </student>
  <student>
    <id>3</id>
    <name>Azhar</name>
  </student>
</students>
Run Code Online (Sandbox Code Playgroud)

请注意,在2名称元素中缺失.

我必须使用Linq to XML读取这个xml

我使用以下代码来获取所有学生..

请建议我改进此代码

var stds = from std in doc.Descendants("student")
                select new
                {
                    ID = std.Element("id").Value,
                    Name = (std.Element("name")!=null)?std.Element("name").Value:string.Empty
                };
Run Code Online (Sandbox Code Playgroud)

linq-to-xml

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