实现JavaScript代码与控制台应用程序C#之间的通信

时间:2010-02-09 08:49:31

标签: c# javascript interop automated-tests comet

现在我正在解决Web服务器性能测试任务,并且有一点问题。

communication between DHTML and C# code有办法。它在Win Application中完美运行,但我需要控制台应用程序。 所以我创建了简单的测试

Program.cs的


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CometTest
{    
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            Client c = new Client(@"URL");
            Console.ReadLine();
            Console.WriteLine(c.ToString());

        }

    }
}
    

Client.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Security.Permissions;

namespace CometTest
{
    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
    [System.Runtime.InteropServices.ComVisibleAttribute(true)]
    public class Client
    {
        public WebBrowser browser;

        public Client(string host)
        {
            browser = new WebBrowser();
            browser.ObjectForScripting = this;
            browser.Navigate(host);      
        }
        public void Notify(String message)
        {
            Console.WriteLine(message);
        }
    }
}
    

在我执行的JavaScript代码中 window.external.Notify( '试验'); ,但没有成功:-(

任何建议?

1 个答案:

答案 0 :(得分:0)

我认为你几乎和这里的人有同样的问题:WebBrowser Control - Console Application - Events Not Firing

也许他得到的答案对你也有帮助。来自控制台应用程序的消息不会被触发,因为:

  

STA线程的基本要求是它需要运行消息泵。在Windows窗体中,您可以使用Application.Run。或者您可以使用user32手动编写消息泵!GetMessage& DispatchMessage函数。但是在WinForms或WPF中使用它可能更容易。