WIA性能问题

时间:2011-03-20 15:24:23

标签: c# wpf performance wia

我在WPF应用程序中使用WIA 2.0在拍摄时从相机中抓取图像(使用wiaEventItemCreated事件)。

这种方法很好,除了性能问题,我似乎无法找到解决方法。我的应用程序存储客户的照片,您可以浏览客户,并更改您正在查看的客户。当相机拍照时,照片将与所选客户一起存储。当我选择客户A然后选择客户B然后拍摄另外10个镜头时,快速连续拍摄10张照片就会出现问题。似乎WIA在开始下一个事件之前等待每张照片被转移,所以几乎排队他们而不是在射击时直接发送事件?我99%确定我的代码没有导致这种行为,我认为它可能是内置的行为?

有没有人遇到并征服过这个?任何人都有任何其他建议可能适合我想要做的事情?很高兴发布更多信息或代码。

我手头没有代码,但它是这样的:

// Set up the handler
var manager = new DeviceManagerClass();
manager.RegisterEvent(...wiaEventItemCreated);
manager.OnEvent += ...(DeviceEventHandler);

// the handler, don't quote me on the order of parameters, i'm doing this from memory!
void DeviceEventHandler(string deviceId, string eventId, string itemId) {

    if (eventId == ...wiaEventItemCreated) {
        // Get the currently selected object
        var selectedCustomer = _customerService.GetCurrentCustomer();

        // Put the itemId and selectedCustomerId in a queue to be processed later
        _queue.Enqueue(new ProcessFileMessage { CustomerId = selectedCustomer.Id,
            ItemId = itemId);
    }

}

因此,代码会尝试抓取当前选定的客户以及稍后要处理的itemId。队列在BackgroundWorker中处理,并执行.Transfer()和.SaveAs()。我所看到的是DeviceEventHandler需要花费很长时间才能触发,我原本预计一旦创建新照片就会触发该事件。

0 个答案:

没有答案