小编Syl*_*ain的帖子

为什么WinDbg,任务管理器和VS调试器报告的线程数不同?

当我的.Net 3.5应用程序运行时,Windows任务管理器显示我的应用程序有16个线程.我为进程收集了一个内存转储,并使用WinDbg/SOS打开它.

运行!threads命令显示我有:

ThreadCount: 456
UnstartedThread: 0
BackgroundThread: 6
PendingThread: 0
DeadThread: 449
Hosted Runtime: no
Run Code Online (Sandbox Code Playgroud)

以下是!threads输出的前几行:

       ID OSID ThreadOBJ    State     GC       Context       Domain   Count APT Exception
   0    1 2848 004366a8      6020 Enabled  11738178:11738778 0042a9f0     0 STA
   2    2 1820 004430e0      b220 Enabled  00000000:00000000 0042a9f0     0 MTA (Finalizer)
   7    5 2c38 055d6330    80a220 Enabled  00000000:00000000 0042a9f0     0 MTA (Threadpool Completion Port)
   8    4  e18 04116900   180b220 Enabled  1157cdc8:1157e778 0042a9f0     0 MTA (Threadpool Worker)
XXXX    6    0 055f94b0      9820 Enabled  00000000:00000000 …

.net multithreading windbg

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

如何防止WPF使用Windows字体大小选项进行缩放?

我不希望我的WPF GUI与Windows字体大小选项(DPI)一起扩展.这不仅仅是在UserControl上指定固定字体大小的问题,因为缩放会影响UserControl中的图像和边框.我可以在UserControl上设置一个属性来关闭scalling吗?如果没有,我该怎么办?

wpf highdpi

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

如何在aurelia单元测试中访问DOM元素?

在单元测试中,如何实例化自定义元素(或视图)并访问实时 DOM元素?

我读到了这篇文章,它实现了自定义元素的实例化,但我认为我无法访问DOM元素.

顺便说一下,我知道Protractor和端到端测试,但这不是我在这里寻找的.


2016年10月14日更新:

我发现我可以注册这样的实例来完成@inject(Element)工作:

container = new Container().makeGlobal();
container.registerInstance(Element, document.createElement('div') );
vm = BehaviorInstance.createForUnitTest(Test, {}, {});
Run Code Online (Sandbox Code Playgroud)

虽然注入工作(我的测试自定义元素得到参考),但这并没有导致aurelia对元素做任何事情.我的自定义元素的模板尚未使用,因此元素innerHtml<div></div>.

javascript aurelia

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

WPF用户控件中的键盘输入不会发送到WinForms容器

我们有一个WinForms应用程序,我们正在逐步转换为WPF.此时应用程序的主窗体是一个Form(WinForm),它包含一个用WPF构建的垂直侧边栏.侧栏托管在ElementHost控件中.

在主窗体中,KeyPreview设置为true,我们重写OnKeyDown()以处理应用程序范围的键盘快捷方式.当侧边栏具有焦点时,键盘事件不会发送到OnKeyDown.

解决这个问题的正确方法是什么?

wpf winforms-interop winforms

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

从iisnode访问web.config设置?

如果我将设置添加到我的应用程序的web.config文件中,是否有API可以从我的应用程序中读取设置,或者我是否必须使用XML库读取该文件?

iisnode

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

child_process.execFile退出缓慢

我有一个Node脚本以PluginManager.exe这种方式调用外部程序():

const util = require('util');
const execFile = util.promisify(require('child_process').execFile);

const process = execFile('PluginManager.exe', ['/install']);
process
  .then(({stdout, stderr}) => console.log('done', stdout, stderr))
  .catch(e => console.log(e));
Run Code Online (Sandbox Code Playgroud)

PluginManager.exe需要8秒才能执行.我的问题是,在子进程退出后,Node脚本会再运行10秒钟.我知道什么时候PluginManager.exe完成,因为我可以看到它从Windows任务管理器进程列表中消失.

是什么让Node进程运行了这么长时间,我该怎么做以确保它在子进程退出后立即退出?

windows child-process node.js

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

如何为WCF服务启用IIS压缩?

我目前使用自定义gzip编码器为我的WCF服务.如果可能的话,我想用内置的IIS 7压缩替换它.我无法在线查找有关如何操作的信息.

有没有办法为WCF服务启用IIS 7压缩?你知道这是否会与.Net 4一起开箱即用?

编辑6月15日:我仍在寻找一种用主流方法替换我们的自定义gzip编码器的方法,所以如果您知道如何使用.Net 4和IIS 7,请回答这个问题.

谢谢


补充工具栏:我尝试手动执行此操作

由于我无法通过简单地旋转几个旋钮找到如何做到这一点,我决定尝试手动启用它.

到目前为止,我有:

  • 安装并启用了IIS 7动态压缩模块
  • 更改了applicationHost.config文件的部分以启用mimeType="application/soap+xml"和的压缩mimeType="application/xop+xml".

我使用HTTP嗅探器来嗅探从我的应用程序发送的流量(Windows窗体).我看到请求没有Accept-Encoding:gzip,deflatehttp标头.

所以我

  • 使用OperationContextScope类及其手动将其添加到所有传出呼叫OutgoingMessageProperties.(如果我找到解决方案,我会在稍后发布详细信息).

使用http嗅探器,我可以看到客户端标头现在具有正确的标头:

POST /### path to my service ####/MyService.svc HTTP/1.1
MIME-Version: 1.0
Content-Type: multipart/related; type="application/xop+xml";
    start="<http://tempuri.org/0>";
    boundary="uuid:####### some uuid #############";
    start-info="application/soap+xml"
Accept-Encoding: gzip,deflate
Host: ####### my server name #############
Content-Length: 1753
Expect: 100-continue
Run Code Online (Sandbox Code Playgroud)

但服务器响应仍未压缩.

为什么服务器响应未压缩?我使用过正确的mime类型吗?一旦我让服务器返回压缩答案,客户端会自动解压缩它还是必须在客户端编写代码进行解压缩?


谢谢你的帮助

compression wcf

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

何时在UI应用程序中调用SynchronizationContext.SetSynchronizationContext()?

我正在学习这门SynchronizationContext课程.我试图了解SynchronizationContext.SetSynchronizationContext()在WinForm/WPF应用程序的上下文中调用的常见用法场景是什么.设置SynchronizationContext线程是什么意思?我什么时候该做,为什么?另外,如果我设置它,我应该在某个时候取消它吗?

编辑:

在他的回答中,@ Hans Passant问我为什么在考虑SetSynchronizationContext().我的想法是在工作线程上设置上下文,以便在该线程上运行的代码将具有要使用的上下文.

private void button3_Click(object sender, EventArgs e)
{
    var syncContext = SynchronizationContext.Current;
    Task.Factory.StartNew(() =>
    {
        // Setup the SynchronizationContext on this thread so 
        // that SomeAsyncComponentThatNeedsACurrentContext
        // will have a context when it needs one
        if (SynchronizationContext.Current == null)
            SynchronizationContext.SetSynchronizationContext(syncContext);

        var c = new SomeAsyncComponentThatNeedsACurrentContext();
        c.DoSomething();

    });
}
Run Code Online (Sandbox Code Playgroud)

c# wpf multithreading winforms synchronizationcontext

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

将PNG图像保存到内存流会导致错误

我有一个WebAPI端点(在IIS中托管),它从数据库(字节数组)读取图像并以PNG格式返回它们.这段代码很简单:

  Image img = ImageHelper.ReadFromDatabase(…);
  using (MemoryStream ms = new MemoryStream())
  {
      img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
      HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK);
      response.Content = new ByteArrayContent(ms.ToArray());
      response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");
      response.ConfigureResponseCachability(parseConceptVersion, TimeSpan.FromHours(1));
      return response;
  }
Run Code Online (Sandbox Code Playgroud)

我有三个Web服务器,其中一个上面的代码导致此错误:A generic error occurred in GDI+.at at System.Drawing.Image.Save().

有关服务器的更多细节

服务器运行不同的OS版本:

  • 服务器1,工作正常:Windows Server 2012 Standard
  • 服务器2,工作正常:Windows Server 2008 R2 Standard
  • 服务器3,无法正常工作:Windows Server 2012 R2数据中心(核心)

JPEG是一种解决方法

我已经更改了上面的代码以返回JPEG而不是PNG,并修复了问题.

  img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
Run Code Online (Sandbox Code Playgroud)

我必须发送PNG图像,所以我需要找到根本原因.

使用WPF类而不是Windows Form类

我将代码转换为使用WPF类(System.Windows.Media)而不是Windows Form类.结果很有趣:我在创建PNG时也出错了.这次错误发生The component registration is invalid. (Exception from HRESULT: 0x88982F8A)System.Windows.Media.Imaging.BitmapEncoder.SaveFrame()

服务器上是否缺少某些东西? …

c# iis wpf asp.net-web-api windows-server-2012-r2

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

如何查看Tortoise HG发布的Mercurial命令?

我有办法看看Tortoise HG发布的Mercurial命令是什么?例如,如果我在Tortoise中使用Shelve命令,我想看看它是如何(以及如果)在引擎盖下调用'hg shelve'.

mercurial tortoisehg

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