NTwain 数据源打开

问题描述 投票:0回答:1

下面的代码在控制台应用程序中运行良好,当我在 WCF 中运行相同的代码时,它卡在数据源上open 方法:

      // Create appId
            Version ver = new Version();
            var appId = TWIdentity.Create(DataGroups.Image | DataGroups.Control, ver, "bla bla", "bla", "bla", "");

            // Attach
            var session = new TwainSession(appId);

            List<Image> scannedImages = new List<Image>();
            session.TransferReady += (s, e) =>
            {
                Debug.Print("TransferReady is a go.");
            };
            session.DataTransferred += (s, e) =>
            {
                if (e.NativeData != IntPtr.Zero)
                {
                    // Handle image data
                    if (e.NativeData != IntPtr.Zero)
                    {
                        var stream = e.GetNativeImageStream();
                        if (stream != null)
                        {
                            //Save Image to list
                            scannedImages.Add(Image.FromStream(stream));
                        }
                    }
                }
            };

            // Open it
            session.Open();

            DataSource myDS = session.FirstOrDefault();
            myDS.Open();
            
            // Start Scan
            myDS.Enable(SourceEnableMode.NoUI, false, IntPtr.Zero);

            //Close Session
            myDS.Close();

我也试过禁用防火墙,但没有成功。没有显示错误,只是无限加载。 有什么建议吗?

c# windows-services twain
1个回答
0
投票

也许你可以使用

TwainSession.ShowSourceSelect()
来显示twaindsm的selectdialog,我在winform中使用这种方法;然后你可以检查数据源是否为空以设置默认源哪个对话框最后选择源,只需使用
twainSession.DefaultSource
;我想你可以在 SouceDisabled 事件中关闭数据源,但 TwainSession 永远不需要关闭它,您可以在应用程序退出或退出时关闭它

© www.soinside.com 2019 - 2024. All rights reserved.