Click here to Skip to main content
15,895,557 members
Home / Discussions / C#
   

C#

 
AnswerRe: Service Starting Problem! Pin
N a v a n e e t h2-Jun-08 22:59
N a v a n e e t h2-Jun-08 22:59 
GeneralRe: Service Starting Problem! Pin
backSlashZero3-Jun-08 0:17
backSlashZero3-Jun-08 0:17 
AnswerRe: Service Starting Problem! Pin
#realJSOP2-Jun-08 23:27
mve#realJSOP2-Jun-08 23:27 
GeneralRe: Service Starting Problem! Pin
backSlashZero3-Jun-08 0:08
backSlashZero3-Jun-08 0:08 
GeneralRe: Service Starting Problem! Pin
#realJSOP3-Jun-08 0:33
mve#realJSOP3-Jun-08 0:33 
GeneralRe: Service Starting Problem! Pin
backSlashZero3-Jun-08 0:52
backSlashZero3-Jun-08 0:52 
Questionhelp in binding data to dropdowmlist Pin
csp2-Jun-08 22:44
csp2-Jun-08 22:44 
QuestionError stop Http Listener Pin
George_George2-Jun-08 21:58
George_George2-Jun-08 21:58 
Hello everyone,


Here is my simple application code for a Windows Service application. The question is, when stop the service, there is always,

// [System.InvalidOperationException] = {"Please call the Start() method before calling this method."}

Does anyone have any ideas why there is such issue and how to fix?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
using System.Net;
using System.Threading;

namespace TestServiceStop1
{
    public partial class Service1 : ServiceBase
    {
        private Thread _tHttpThread;
        private TestHttpServer _server;

        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            _server = new TestHttpServer(this);

            _tHttpThread = new Thread(_server.StartListen);

            _tHttpThread.Start();
        }

        protected override void OnStop()
        {
            // stop HTTP server
            _server.Stop(false);
        }
    }

    public class TestHttpServer
    {
        // listening HTTP port
        private int _Port = 0;

        // internal wrapped HTTP listener
        private HttpListener _Server = new HttpListener();

        private Service1 _manager;

        public TestHttpServer (Service1 manager)
        {
            _manager = manager;
        }

        public int ListenPort
        {
            get
            {
                return _Port;
            }
            set
            {
                _Port = value;
            }
        }

        public void StartListen()
        {
            try
            {
                IAsyncResult result;
                _Server.Prefixes.Add(String.Format("http://+:{0}/", 9099));
                _Server.Start();
                while (true)
                {
                    result = _Server.BeginGetContext(new AsyncCallback(this.HttpCallback), _Server);
                    result.AsyncWaitHandle.WaitOne();
                }
            }
            // any exceptions are not expected
            // catch InvalidOperationException during service stop
            // [System.InvalidOperationException] = {"Please call the Start() method before calling this method."}
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void Stop(bool isTerminate)
        {
            _Server.Stop();
        }

        // callback function when there is HTTP request received
        private void HttpCallback(IAsyncResult result)
        {
            HttpListenerContext context = _Server.EndGetContext(result);
            HandleRequest(context);
        }

        // find matched URL HTTP request handler and invoke related handler
        private void HandleRequest(HttpListenerContext context)
        {
            string matchUrl = context.Request.Url.AbsolutePath.Trim().ToLower();

            context.Response.StatusCode = 200;
            context.Response.StatusDescription = "OK";
            context.Response.Close();
        }
    } // end of Http Listener class
}



thanks in advance,
George
AnswerRe: Error stop Http Listener Pin
N a v a n e e t h2-Jun-08 22:26
N a v a n e e t h2-Jun-08 22:26 
GeneralRe: Error stop Http Listener Pin
George_George2-Jun-08 22:45
George_George2-Jun-08 22:45 
GeneralRe: Error stop Http Listener Pin
N a v a n e e t h2-Jun-08 22:51
N a v a n e e t h2-Jun-08 22:51 
GeneralRe: Error stop Http Listener Pin
George_George2-Jun-08 23:01
George_George2-Jun-08 23:01 
GeneralRe: Error stop Http Listener Pin
N a v a n e e t h2-Jun-08 23:12
N a v a n e e t h2-Jun-08 23:12 
GeneralRe: Error stop Http Listener Pin
GDavy2-Jun-08 23:08
GDavy2-Jun-08 23:08 
GeneralRe: Error stop Http Listener Pin
N a v a n e e t h2-Jun-08 23:12
N a v a n e e t h2-Jun-08 23:12 
GeneralRe: Error stop Http Listener Pin
GDavy2-Jun-08 23:20
GDavy2-Jun-08 23:20 
GeneralRe: Error stop Http Listener Pin
George_George2-Jun-08 23:42
George_George2-Jun-08 23:42 
GeneralRe: Error stop Http Listener Pin
N a v a n e e t h2-Jun-08 23:56
N a v a n e e t h2-Jun-08 23:56 
GeneralRe: Error stop Http Listener Pin
George_George3-Jun-08 1:24
George_George3-Jun-08 1:24 
GeneralRe: Error stop Http Listener Pin
N a v a n e e t h3-Jun-08 1:40
N a v a n e e t h3-Jun-08 1:40 
GeneralRe: Error stop Http Listener Pin
George_George3-Jun-08 2:16
George_George3-Jun-08 2:16 
GeneralRe: Error stop Http Listener Pin
N a v a n e e t h3-Jun-08 2:30
N a v a n e e t h3-Jun-08 2:30 
GeneralRe: Error stop Http Listener Pin
George_George3-Jun-08 2:49
George_George3-Jun-08 2:49 
GeneralRe: Error stop Http Listener Pin
N a v a n e e t h3-Jun-08 7:03
N a v a n e e t h3-Jun-08 7:03 
GeneralRe: Error stop Http Listener Pin
George_George3-Jun-08 15:23
George_George3-Jun-08 15:23 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.