Реализация взаимодействия между кодом JavaScript и консольным приложением C # - PullRequest
1 голос
/ 09 февраля 2010

Теперь я решаю задачу тестирования производительности веб-сервера, и у меня возникла небольшая проблема.

Существует способ связи между DHTML и кодом C # . Он отлично работает в 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 голосов
/ 10 февраля 2010

Я думаю, что у вас почти такой же вопрос, как у парня: Управление WebBrowser - Консольное приложение - События не запускаются

Возможно, ответ, который он получил, вам тоже поможет. Сообщения из консольного приложения не генерируются, потому что:

Основным требованием к потоку STA является то, что ему необходимо запустить насос сообщений. В Windows Forms вы можете использовать Application.Run. Или вы можете написать сообщение вручную, используя user32! GetMessage & DispatchMessage. Но, вероятно, проще использовать тот в WinForms или WPF.

...