public void Initialize()
{
Task.Factory.StartNew(() =>
{
lock (_snifferLock)
{
if (_teraSniffer != null)
{ //dereference the existing sniffer if it exists
var sniffer = _teraSniffer;
_teraSniffer = null;
sniffer.Enabled = false;
sniffer.MessageReceived -= HandleMessageReceived;
sniffer.NewConnection -= HandleNewConnection;
Logger.Info("Sniffer has been disabled.");
}
IpSniffer ipSniffer = null;
if (UseRawSockets)
{
ipSniffer = new IpSnifferRawSocketMultipleInterfaces();
}
_teraSniffer = new TeraSniffer(ipSniffer, BasicTeraData.Servers);
_teraSniffer.MessageReceived += HandleMessageReceived;
_teraSniffer.NewConnection += HandleNewConnection;
_teraSniffer.Enabled = true;
Logger.Info("Sniffer has been enabled.");
}
}, TaskCreationOptions.LongRunning);//provide hint to start on new thread
}