C# Windows Service에서 디비깅을 쉽게 하는 방법

Windows Service에서 디비깅을 쉽게 하는 방법은 까다롭다. 실행프로그램을 배포해 놓고 Log를 작성해서 결과를 확인해야 하는 번거로움이 있다.
찾아 보면 아래의 참조와 같은 방법을 사용해도 되기는 하겠지만 간단한 방법을 검토 해보자

http://devsw.tistory.com/153
https://msdn.microsoft.com/ko-kr/library/cktt23yw.aspx
http://www.codeproject.com/Articles/10153/Debugging-Windows-Services-under-Visual-Studio-NET
http://blog.aliencube.org/ko/2014/04/30/developing-windows-service-with-topshelf/

이글에서 설명하는 방법은  Serviced의 Method를 호출하는 코드를 작성하여 Service를 제어하여 쉽게 Debugging하는 방법 이다.. 간단하게 아래와 같이 서비스 메서드를 호출 하여 동작을 확인하고 코드를 수정하면 된다.
그러나 이 방법은 실제 서비스 프로그램이 배포 되었을 때와 동작이 다르므로 배포후 확인은 별도로 해애한다 
MethodInfo onStartMethod = typeof(ServiceBase).GetMethod(“OnStart”,
BindingFlags.Instance | BindingFlags.NonPublic); 
onStartMethod?.Invoke(service, new object[] { new string[] { } });

Service Test를 위한 윈도우 폼을 하나 만든다음 서버스를 제어하는 코드를 추가한다.

그리고 버튼이벤트 및 생성자를 아래의 코드와 같이 작성한다. 
ServiceRunner.cs

namespace MyWinService
{
    public partial class ServiceRunner : Form
    {
        private readonly ServiceBase[] _theService;
        private readonly MethodInfo onStartMethod;
        private readonly MethodInfo onStopMethod;
        private readonly MethodInfo onPauseMethod;
        private readonly MethodInfo onContinueMethod;
        public ServiceRunner(ServiceBase[] servicesToRun)
        {           
            InitializeComponent();
            #region GetMethodInfo
            onStartMethod = typeof(ServiceBase).GetMethod("OnStart",
               BindingFlags.Instance | BindingFlags.NonPublic);

            onStopMethod = typeof(ServiceBase).GetMethod("OnStop",
               BindingFlags.Instance | BindingFlags.NonPublic);

            onPauseMethod = typeof(ServiceBase).GetMethod("OnPause",
               BindingFlags.Instance | BindingFlags.NonPublic);

            onContinueMethod = typeof(ServiceBase).GetMethod("OnContinue",
               BindingFlags.Instance | BindingFlags.NonPublic);
            _theService = servicesToRun;
            #endregion
            Show();
        }

        private void startButton_Click(object sender, EventArgs e)
        {        
            toolStripStatusLabel1.Text = "Started";
            foreach (ServiceBase service in _theService)
            {               
                onStartMethod?.Invoke(service, new object[] { new string[] { } });               
            }
        }
        private void pauseButton_Click(object sender, EventArgs e)
        {            
            toolStripStatusLabel1.Text = "Paused";
            foreach (ServiceBase service in _theService)
            {
                onPauseMethod?.Invoke(service, null);
            }
        }
        private void continueButton_Click(object sender, EventArgs e)
        {            
            toolStripStatusLabel1.Text = "Started";
            foreach (ServiceBase service in _theService)
            {
                onContinueMethod?.Invoke(service, null);
            }
        }
        private void stopButton_Click(object sender, EventArgs e)
        {           
            toolStripStatusLabel1.Text = "Stopped";
            foreach (ServiceBase service in _theService)
            {              
                onStopMethod?.Invoke(service, null);               
            }
        }
}

program.cs

namespace MyWinService
{
    static class Program
    {
        ///
        /// 해당 응용 프로그램의 주 진입점입니다.
        /// 
        static void Main(string[] args)
        {            
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[]
            {
               new Service1()
            };
#if DEBUG
   System.Windows.Forms.Application.Run(new ServiceRunner(ServicesToRun));
#else
            ServiceBase.Run(ServicesToRun);
#endif
        }
    }
}

Service1.cs

namespace MyWinService
{
    partial class Service1 : ServiceBase
    {
        private System.Diagnostics.EventLog eventLog1;
        System.Timers.Timer timer = new System.Timers.Timer();
        public Service1()
        {
            InitializeComponent();
            this.eventLog1 = new System.Diagnostics.EventLog();
            if (!System.Diagnostics.EventLog.SourceExists("Test Source"))
            {
                System.Diagnostics.EventLog.CreateEventSource(
                    "Test Source", "MyNewLog");
            }
            eventLog1.Source = "Test Source";
            eventLog1.Log = "MyNewLog";
        }
        protected override void OnStart(string[] args)
        {
            eventLog1.WriteEntry("MyWinService Started", EventLogEntryType.Information);            
            timer.Interval = 20000; // 20 seconds
            timer.Elapsed += new System.Timers.ElapsedEventHandler(this.OnTimer);
            timer.Start();
        }

        protected override void OnPause()
        {
            timer.Stop();
            eventLog1.WriteEntry("MyWinService OnPause", EventLogEntryType.Information);
        }

        protected override void OnContinue()
        {
            timer.Start();
            eventLog1.WriteEntry("MyWinService OnContinue", EventLogEntryType.Information);
        }
        protected override void OnStop()
        {
            eventLog1.WriteEntry("MyWinService Stoped", EventLogEntryType.Information);
        }

        private void OnTimer(object sender, ElapsedEventArgs e)
        {
            string message = ServiceName + " is beeping "+ string.Format("{0:d/M/yyyy HH:mm:ss}", DateTime.Now);
            System.Media.SystemSounds.Exclamation.Play();
            eventLog1.WriteEntry(message, EventLogEntryType.Information);
        }        
    }
}

Try Icon 메뉴로 디버깅 만들기

Program.cs

static class Program
{
        ///
        /// 해당 응용 프로그램의 주 진입점입니다.
        /// 
        static void Main()
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[]
            {
                new ServiceProcess()
            };
#if DEBUG
            using (ServiceController pL = new ServiceController(ServicesToRun))
            {
                // Make sure the application runs!
                pL.Display();
                Application.Run();
            }
#else
            ServiceBase.Run(ServicesToRun);
#endif
}

ServiceController.cs 코드를 추가하여 메뉴와 동작을 추가한다

class ServiceController : IDisposable
{
   private readonly ServiceBase[] _theService;             
   NotifyIcon ni;
   public ServiceController(ServiceBase[] servicesToRun)
   {            
      _theService = servicesToRun;         
       ni = new NotifyIcon();
   }
  public void Dispose()
  {
      ni.Dispose();           
  }
  public ContextMenuStrip CreateContext()
  {
            // Add the default menu options.
            ContextMenuStrip menu = new ContextMenuStrip();
            ToolStripMenuItem item;
            ToolStripSeparator sep;

            item = new ToolStripMenuItem();
            item.Text = Properties.Resources.Start;
            item.Click += new EventHandler(Start);
            item.Image = Properties.Resources.CONGUIIMG;            
            menu.Items.Add(item);

            // pause.
            item = new ToolStripMenuItem();
            item.Text = Properties.Resources.Pause;
            item.Click += new EventHandler(Pause);
            item.Image = Properties.Resources.Pauseimg;
            menu.Items.Add(item);
            // restart.
            item = new ToolStripMenuItem();
            item.Text = Properties.Resources.Restart;
            item.Click += new EventHandler(Restart);
            item.Image = Properties.Resources.Restartimg;
            menu.Items.Add(item);

            // Windows Explorer.
            item = new ToolStripMenuItem();
            item.Text = Properties.Resources.Stop;
            item.Click += new EventHandler(Stop);
            item.Image = Properties.Resources.CONGUIOFFIMG;
            menu.Items.Add(item);            
            
            return menu;
 }
 /// Displays the icon in the system tray. 
 public void Display()
{
 // Put the icon in the system tray and allow it react to mouse clicks.//
  ni.MouseClick += new MouseEventHandler(ni_MouseClick);
  ni.Icon = Properties.Resources.CONGUI;
  ni.Text = "Launcher Application";
  ni.Visible = true;

  // Attach a context menu.
   ni.ContextMenuStrip = CreateContext();            
  }
  void Start(object sender, EventArgs e)
  {
          MethodInfo onStartMethod = typeof(ServiceBase).GetMethod("OnStart",
          BindingFlags.Instance | BindingFlags.NonPublic);

         foreach (ServiceBase service in _theService)
         {
           onStartMethod?.Invoke(service, new object[] { new string[] { } });
         }

          ToolStripMenuItem item = (ToolStripMenuItem)sender;

          item.Visible = false;
          ni.ContextMenuStrip.Items[1].Visible = true;
          ni.ContextMenuStrip.Items[0].Visible = true;
          ni.Icon = Properties.Resources.CONGUI;          
        }
void Restart(object sender, EventArgs e)
{
            MethodInfo onContinueMethod = typeof(ServiceBase).GetMethod("OnContinue",
                BindingFlags.Instance | BindingFlags.NonPublic);
            foreach (ServiceBase service in _theService)
            {
                onContinueMethod?.Invoke(service, null);
            }
}
void Pause(object sender, EventArgs e)
{
            MethodInfo onPauseMethod = typeof(ServiceBase).GetMethod("OnPause",
               BindingFlags.Instance | BindingFlags.NonPublic);
            foreach (ServiceBase service in _theService)
            {
                onPauseMethod?.Invoke(service, null);
            }

}
void Stop(object sender, EventArgs e)
{
            MethodInfo onStopMethod = typeof(ServiceBase).GetMethod("OnStop",
              BindingFlags.Instance | BindingFlags.NonPublic);
            foreach (ServiceBase service in _theService)
            {
                onStopMethod?.Invoke(service, null);
            }
        }

}

“C# Windows Service에서 디비깅을 쉽게 하는 방법”의 155개의 댓글

  1. Hello there, just became aware of your blog through Google, and found that it
    is really informative. I’m going to watch out for brussels.
    I will be grateful if you continue this in future. Numerous people will be benefited from your writing.

    Cheers!

    Check out my homepage – 선릉안마

  2. CBD or Cannabidiol is a very interesting medicine since it is entirely untapped and the oil is drawn out from one more
    plant that does not contribute to international warming at all!
    It has been found to be extremely reliable in treating many
    types of diseases such as joint inflammation, clinical depression,
    anxiousness, nausea, epilepsy, erectile dysfunction and also much
    more. The oil is originated from the marijuana plant as well as
    has actually been made use of for years in the United States, in Mexico, in Canada, in Russia as well as several
    European countries.

    Feel free to visit my webpage: CBD oil

  3. Undeniably consider that that you said. Your favourite reason appeared to
    be on the web the simplest thing to take into account of.
    I say to you, I certainly get irked at the same time as other folks think about
    worries that they plainly do not understand about. You controlled to hit the nail upon the top as smartly as outlined out the
    entire thing with no need side-effects , people
    can take a signal. Will probably be again to get more.
    Thank you

  4. Cannabidiol, or CBD as it is understood medically, is an important component in numerous clinical cannabis supplements.
    It is estimated that the large bulk of energetic ingredients in today’s industrial marijuana supplements
    are comprised of CBD. This is unusual due to the fact that when you consider it, CBD is not actually
    a “cannabis” active ingredient in any way.
    Rather, it is a plant component that has been discovered
    to be very valuable in the context of certain medical problems such as persistent discomfort,
    queasiness, seizures, clinical depression, stress and anxiety, and nausea or vomiting.
    To this particular day, the CBD is the only approved prescription drug in the USA that is solely originated from plants.

    My web blog best CBD oils UK

  5. you’re in reality a just right webmaster. The website loading velocity is incredible.
    It seems that you’re doing any unique trick.

    In addition, The contents are masterwork. you’ve performed a fantastic
    process in this subject!

  6. My partner and I stumbled over here by a different web address and thought I might as well check things out.
    I like what I see so now i am following you. Look forward to
    exploring your web page repeatedly.

  7. Simply desire to say your article is as astonishing. The clearness in your post is
    just nice and i can assume you are an expert on this subject.

    Well with your permission allow me to grab your feed to keep
    up to date with forthcoming post. Thanks a million and please
    continue the enjoyable work.

    Here is my web blog – 먹튀사이트

  8. We’re a group of volunteers and starting a
    new scheme in our community. Your web site provided us with useful info
    to work on. You have performed a formidable job and our entire group might be thankful
    to you.

  9. Hi would you mind letting me know which web host you’re working with?
    I’ve loaded your blog in 3 different browsers and I must say this
    blog loads a lot faster then most. Can you suggest
    a good web hosting provider at a honest price? Kudos, I appreciate
    it!

  10. Hi there! I understand this is kind of off-topic
    but I needed to ask. Does operating a well-established website like yours take a massive amount
    work? I am brand new to operating a blog however I do write in my diary every day.
    I’d like to start a blog so I can share my personal experience and feelings online.
    Please let me know if you have any kind of ideas or tips for brand new
    aspiring blog owners. Appreciate it!

    Feel free to visit my homepage :: 사설토토

  11. พนันบอล เว็บไซต์พนันบอล มาตรฐานระดับนานาชาติ รับรองอันดับ 1 โดย Google บริการตลอด 1 วัน มีพนักงานมืออาชีพที่คอยให้บริการและให้คำปรึกษาในทุกคำถามตลอด 1 วัน ตรงนี้คือที่สุดของระบบ สมัครเป็นสมาชิก กับ Call Center ที่เยี่ยมที่สุด ทันสมัยที่สุดใน
    คาสิโนออนไลน์ และก็ฝาก-ถอน ทันใจใน 5 นาที ผ่านทุกแบงค์ชั้นแนวหน้า สมัครพนันบอลออนไลน์ ได้ตลอด 24 ชั่วโมง แม้ว่าคุณอยากใช้บริการ UFABET1688 เพื่อติดตามข้อมูลต่างๆของวงการฟุตบอล
    รวมทั้งการแทงบอลด้วย คุณควรต้องทราบสิ่งต่างๆเหล่านี้ก่อน เพื่อให้คุณรู้เรื่อง แล้วก็สามารถเล่นบอลได้อย่างมีคุณภาพสูงสุด

  12. It’s perfect time to make some plans for the future and it is time to be happy.
    I have read this post and if I could I desire to
    suggest you some interesting things or tips. Perhaps you could write next articles referring to this article.
    I wish to read more things about it!

  13. That is really fascinating, You are an excessively professional blogger.
    I’ve joined your rss feed and sit up for looking for more of your great post.
    Additionally, I’ve shared your site in my social networks

  14. Description de PhenQ :

    “PhenQ” est un produit qui combine les bienfaits de
    différents compléments minceurs afin d’obtenir une perte
    de poids optimale!
    Evaluation de PhenQ :

    “PhenQ” est un comprimé amincissant qui additionne les effets minceurs positifs
    de plusieurs compléments alimentaires pour vous offrir un résultat jusqu’ici inégalé en ce qui concerne la perte
    de poids!

    En effet, ce nouveau complément alimentaire amaigrissant a, de part
    sa formule innovante, plusieurs cordes à son arc!

    Quels sont les propriétés du produit?

    PhenQ“PhenQ” est formulé de façon à nous
    procurer toute une palette d’actions qui devraient
    favoriser la perte de poids.

    Voici donc la liste des effets bénéfiques de cette pilule
    minceur :

    – Un effet qui stoppe la production de graisses!

    – Un effet qui booste le métabolisme pour brûler les graisses!

    – Un effet coupe-faim qui supprime l’appétit!

    – Un effet qui donne au corps un surplus d’énergie!

    – Un effet qui agit positivement sur l’humeur!
    Quels sont les ingrédients contenus dans “PHENQ”?

    “Phenq” est un complément alimentaire fabriqué avec des ingrédients de qualités pharmaceutiques
    dans des installations qui respectent les normes pharmaceutiques américaines et britanniques strictes, ces installations sont en plus approuvées par la FDA (Food and Drug
    Administration)!

    Les ingrédients qui entrent dans la composition de ce comprimé minceur sont :

    1. Le Capsimax en poudre composé d’un mélange de capsicum,
    pipérine, caféine, et niacine.

    – Le Capsicum (extrait de piment) va apporter ses effets brûle-graisses.

    – La Pipérine (poivre noir) va favoriser la perte de
    poids en augmentant la température corporelle.

    – La Caféine va apporter ses effets stimulants et diurétiques.

    – La Niacine (vitamine B3) va favoriser la production d’énergie.

    2. Le Carbonate de Calcium.

    – Le Calcium est bon pour les os et est essentiel au bon fonctionnement de vos cellules.

    3. Le Picolinate de Chrome.

    – Le Picolinate de Chrome favorise la réduction en glucides et aide
    le corps à contrôler le niveau de sucre dans le sang.

    4. La Caféine.

    – La Caféine est un stimulant naturel qui réduit la fatigue, augmente les performances physiques et
    la concentration.
    – La Caféine augmente aussi le niveau de thermogenèse et favorise donc la perte de poids.

    5. a-Lacy Reset®.

    – a-Lacy Reset® est un complexe breveté composé d’Acide alpha-lipoïque, de Cystéine
    et de magnésium. Cette synergie règle l’équilibre des cellules en contrôlant et en neutralisant un grand
    nombre de radicaux liés aux entraînements
    intenses, au vieillissement et aux troubles généraux.

    6. Le Nopal.

    – Le Nopal, cactus extrêmement riche en acides aminés est une source élevée en fibres qui
    aide au contrôle de l’appétit.
    – Le Nopal contribue également à réduire la rétention d’eau.

    7. L-Carnitine.

    – L-Carnitine est un acide aminé naturel qui favorise la transformation des
    réserves graisseuses en énergie.
    Comment ça fonctionne?

    “PhenQ” va avoir une action bénéfique sur l’amaigrissement en agissant sur plusieurs facteurs responsables de
    la prise de poids.

    – Le métabolisme lent

    Ce complément alimentaire va booster le métabolisme
    dans le but d’accélérer la dépense des calories.

    – Les graisses

    Il va diminuer la production de nouvelles graisses et va en plus favoriser la
    combustion des graisses stockées grâce à un effet
    thermogénique puissant.

    – Les fringales

    Cette pilule minceur va également aider au contrôle de l’appétit avec son effet coupe faim.

    – La fatigue

    Grâce à un effet boosteur d’énergie, cette gélule de perte de poids va avoir
    l’avantage de recharger vos batteries tout en luttant contre
    la dépression et le stress.

    La combinaison de ces effets d’amincissement fait de “PhenQ” un allié minceur de poids capable
    de vous aider de façon effective dans votre démarche de perte de poids!

    Posologie :

    Le “Phen Q” se présente sous forme de comprimés minceurs,
    il est commercialisé en bouteille de 60 comprimés.

    La pilule de “PHEN Q” est facile à avaler et se prend
    deux fois par jours, lors du petit déjeuner et
    du déjeuner.
    Informations Complémentaires :

    PhenQLes livraisons sont rapides et sécurisées, elles sont en plus gratuites à
    partir de l’achat de deux bouteilles de ce
    comprimé minceur.

    Le support clientèle est convivial et efficace. Il est accessible via un système de chat direct, via un formulaire en ligne, par téléphone et même avec l’application mobile WhatsApp.

    Le complément alimentaire “PhenQ” est une réelle évolution dans les suppléments minceurs puisqu’il va vous apporter des effets brûleur de graisse efficaces,
    des effets coupe-faim, des effets pour empêcher la production de nouvelles graisses ainsi que des effets boosteur
    d’énergie!
    Inconvénients de PhenQ :

    “PhenQ” ne convient pas aux femmes enceintes ou qui allaitent, aux personnes
    de moins de 18 ans, aux personnes souffrant de dépression, de diabète, de troubles endocriniens,
    de maladies auto-immunes, d’hypertrophie prostatique, de maladie du foie,
    de maladie du rein, du cancer de la prostate, du cancer des testicules ou du cancer du sein.
    Si vous avez des soucis médicaux ou si vous êtes sous prescription médicale, il est
    conseillé de consulter un médecin avant de prendre ce complément de
    perte de poids.

    Il est déconseillé de prendre un comprimé de
    “phenq” après 15 heures car il pourrait vous empêcher de trouver le sommeil.

    Réputation de PhenQ :

    Ce complément minceur jouit d’une assez bonne réputation sur
    Internet, et, l’opinion qui se forge en se basant sur les différents avis, témoignages, critiques et commentaires
    disponibles sur la toile, est que “PHEN Q” apparait comme étant
    une solution minceur qui procure de très bons résultats!

    Wolfson Berg Limited a une excellente réputation, son nom est synonyme de confiance dans l’industrie des
    compléments alimentaires depuis plus de 10 ans!

    Conclusion pour PhenQ :

    PhenQ FemmeComme je ne cesse de le répéter, je ne suis pas friand de ces pilules pour maigrir
    qui sont pour la plupart des arnaques et parfois même se révèlent néfastes pour
    la santé.

    Ceci étant dit, je dois avouer que les avis à propos du comprimé
    minceur “PhenQ” sont assez bons, ce qui me force à approuver et
    à recommander ce produit.

    Mais gardez bien à l’esprit que même si ce produit minceur est efficace, il ne
    vous offrira qu’un coup de pouce pour perdre du poids et, un style de vie sain ainsi qu’une alimentation saine sera
    toujours la seule solution efficace sur le long terme!

  15. Someone necessarily help to make seriously articles I might state.
    This is the very first time I frequented your website page and to this
    point? I amazed with the analysis you made to make this actual submit incredible.
    Excellent activity!

    Also visit my web-site – growing weed

  16. Wow, superb blog structure! How lengthy have you ever been running a blog for?
    you make running a blog glance easy. The entire glance of your web site is excellent, let alone the content![X-N-E-W-L-I-N-S-P-I-N-X]I just couldn’t depart
    your website prior to suggesting that I extremely enjoyed the
    standard info an individual provide for your visitors?

    Is going to be again frequently in order to investigate cross-check new posts.

    Also visit my blog post – weed indoors

  17. The next time I read a blog, Hopefully it does not disappoint me just as much as this particular
    one. After all, Yes, it was my choice to read, however I really believed you’d have something useful
    to say. All I hear is a bunch of crying about something you
    could possibly fix if you were not too busy seeking attention.

    Also visit my site :: flaxseed oil

  18. Hi there just wanted to give you a quick heads up
    and let you know a few of the images aren’t loading correctly.
    I’m not sure why but I think its a linking issue. I’ve tried it in two different web browsers and both show the
    same outcome.

    Take a look at my blog – black penis

  19. Its such as you read my mind! You seem to understand so much approximately
    this, like you wrote the ebook in it or something. I think that you simply can do with some percent to force the message
    house a bit, however instead of that, that is magnificent blog.
    A fantastic read. I’ll definitely be back.

    my web page: Xe888 apk

  20. Hey There. I found your weblog the use of msn. That is
    a very smartly written article. I will make sure to bookmark it and come
    back to read more of your helpful information. Thank you for
    the post. I will certainly return.

    my blog post ex88

  21. Write more, thats all I have to say. Literally, it seems as though you relied on the video to
    make your point. You definitely know what youre talking about, why waste your intelligence
    on just posting videos to your site when you could be giving us something informative to read?

    My web blog – seed sprouts

  22. I believe what you published made a bunch of sense.
    However, consider this, what if you typed a catchier
    title? I ain’t saying your content isn’t solid., but suppose you added a title that grabbed folk’s attention? I mean C# Windows Service에서 디비깅을 쉽게 하는 방법
    | 기록은 자산 is a little boring. You could glance at Yahoo’s home page and note how they create news headlines
    to get viewers interested. You might add a video or a related pic or two to grab readers interested
    about what you’ve got to say. In my opinion, it could
    bring your website a little livelier.

    Here is my homepage :: prefer natural skin

  23. I would like to use the chance of thanking you for your professional direction I have usually enjoyed checking out your
    site. We’re looking forward to the commencement of my college
    research and the entire preparing would never have been complete without browsing
    your web blog. If I may be of any help to others, I’d be ready to help via what I have
    discovered from here.

    Here is my web page … hatched seeds

  24. Can I simply say what a comfort to discover somebody that really understands what they are talking about on the
    net. You certainly realize how to bring an issue to light and make it important.
    More and more people need to check this out and understand this side of the story.
    I was surprised you aren’t more popular given that you most
    certainly possess the gift.

    Also visit my homepage … fat burning heart rate

  25. Howdy just wanted to give you a quick heads up and let you know a few of the images aren’t loading correctly.

    I’m not sure why but I think its a linking issue. I’ve tried it in two different web browsers and both show the same results.

    my homepage eating guide

  26. Having read this I believed it was rather enlightening. I appreciate you taking the
    time and energy to put this information together. I once again find
    myself personally spending a lot of time both reading and posting comments.
    But so what, it was still worth it!

    Feel free to surf to my blog post; flat belly diets

  27. Purely to follow up on the up-date of this issue on your blog and would want to let you know simply how much I loved the time you took
    to produce this beneficial post. In the post, you spoke on how
    to actually handle this problem with all comfort. It would be my personal
    pleasure to collect some more ideas from your site and come as much as offer other folks what I discovered from
    you. Many thanks for your usual wonderful effort.

    Here is my blog post; low-carb diets

  28. Wonderful goods from you, man. I’ve understand your stuff previous to and you are
    just too great. I actually like what you have
    acquired here, certainly like what you are stating and the way in which you say it.
    You make it enjoyable and you still care for to keep it wise.

    I can not wait to read much more from you. This is really a great
    website.

    my website :: orgasm

  29. Thanks so much regarding giving us an update on this issue on your blog.
    Please realize that if a completely new post becomes available or when any improvements occur on the current posting, I
    would want to consider reading a lot more and
    finding out how to make good utilization of those strategies you talk about.
    Thanks for your time and consideration of others by making this web site available.

    Feel free to visit my website – anti-aging supplements

  30. Today, while I was at work, my sister stole my iphone and tested to see if it can survive a 30 foot drop, just so she can be
    a youtube sensation. My iPad is now broken and she has 83 views.
    I know this is totally off topic but I had to share it with someone!

    Feel free to visit my webpage … remove skin

  31. Hey! This is kind of off topic but I need some advice from an established
    blog. Is it hard to set up your own blog? I’m not very techincal but I can figure things out pretty fast.
    I’m thinking about creating my own but I’m not
    sure where to begin. Do you have any ideas or suggestions?
    With thanks

    Also visit my web blog; anti-aging skin care

  32. Good day! This is kind of off topic but I need some guidance from an established blog.

    Is it very hard to set up your own blog? I’m not very techincal but I can figure things out pretty quick.
    I’m thinking about setting up my own but I’m not sure where to begin. Do you have any tips or suggestions?
    Thanks

    Also visit my web blog – xe88hack apk

  33. hello!,I love your writing so so much! proportion we communicate more approximately your article on AOL? I require an expert in this space to unravel my problem. Maybe that’s you! Having a look forward to see you.

  34. Hello! I know this is kinda off topic however I’d figured
    I’d ask. Would you be interested in exchanging links or maybe guest authoring a blog post or vice-versa?
    My website goes over a lot of the same subjects as yours and
    I think we could greatly benefit from each other.
    If you are interested feel free to shoot me an email. I look forward to hearing from you!
    Awesome blog by the way!

    Also visit my website :: ex88

  35. Ꮩerʏ nice post. I just stumbⅼed upon your
    blog and wisheⅾ to say that I have really enjoyed surfing around your blog posts.

    In any case I’ll be subscribing to youг feed and I hoρe you write again very
    soon!

  36. Fantastic website you have here but I was wondering
    if you knew of any message boards that cover the same topics
    discussed here? I’d really like to be a part of community where I can get feedback from other knowledgeable individuals
    that share the same interest. If you have any recommendations, please let me know.
    Bless you!

    Feel free to surf to my web blog xe88 malaysia

  37. Its like you learn my thoughts! You seem to
    know a lot about this, such as you wrote the
    guide in it or something. I feel that you simply can do
    with a few p.c. to drive the message house a bit, but other than that, this is fantastic
    blog. A great read. I’ll certainly be back.

    my blog post … xe88 918kiss

  38. Please let me know if you’re looking for a writer for your blog.
    You have some really great posts and I feel I would
    be a good asset. If you ever want to take some of the load off,
    I’d love to write some material for your blog in exchange
    for a link back to mine. Please blast me an email if interested.

    Thank you!

    Feel free to visit my page – mega888 download

  39. What’s Taking place i am new to this, I stumbled upon this I’ve found It absolutely helpful
    and it has aided me out loads. I hope to give a contribution & assist different customers like its aided
    me. Great job.

    Check out my webpage – ex88

  40. I’ve been surfing online more than 3 hours today,
    yet I never found any interesting article like yours.
    It is pretty worth enough for me. In my view, if all site owners
    and bloggers made good content as you did, the net will be a lot
    more useful than ever before.

  41. I feel that is one of the so much vital information for me.
    And i am glad reading your article. However should statement on few general things,
    The website taste is ideal, the articles is actually excellent :
    D. Good process, cheers.

    my webpage – mchsrd.ru

  42. I leave a leave a response whenever I especially enjoy a post on a website or if I have something to add to the conversation. It’s triggered by the passion displayed in the post I looked at.
    And after this article C# Windows Service에서 디비깅을 쉽게 하는 방법 | 기록은 자산.

    I was moved enough to drop a comment 😛 I actually do have a
    few questions for you if it’s allright. Is it only me or do a few of these remarks come across like written by brain dead people?
    😛 And, if you are posting at other online social
    sites, I’d like to keep up with you. Would you make a list all
    of your public pages like your twitter feed, Facebook page
    or linkedin profile?

    my web site: http://nila.n4mative.com/forums/users/odetteredding

  43. Do you mind if I quote a couple of your articles as long as I provide credit and
    sources back to your webpage? My blog site iss in the exact same niche as yours and
    my visitors would really benefit from a lot of the information you provide here.
    Please let me know if this ok with you. Thqnks a lot!
    https://cdn.shopify.com/s/files/1/1894/0553/files/indesign-interactive-pdf-templates.pdf?v=1617743790
    indesign interactive pdf templates
    rebus puzzles worksheet pdf https://cdn.shopify.com/s/files/1/1894/0553/files/price-action-trading-pdf-download.pdf?v=1617743126

  44. This is the right website for anybody who wants to find
    out about this topic. You know a whole lot its almost
    hard to argue with you (not that I personally would want to…HaHa).
    You definitely put a fresh spin on a topic that has been discussed for
    ages. Great stuff, just great!

    Also visit my webpage – Ron

답글 남기기