Multithreading in windows service

I came across with situation where I have to create multiple thread in windows service.Here is my code.Here I have created 2 thread.

I want create a one notepad file.Want to print number from 0 to 2999 with 2 thread.It suppose to print some number from thread 1 and that some number from thread2 and again from thread1 like this.I am not getting the same output. I am sharing my code and output.

Service code :

public partial class FileMultiTasking : ServiceBase
{
static System.Timers.Timer timer;
public static string apppath = System.AppDomain.CurrentDomain.BaseDirectory.ToString();
public static string errormsg;

PrintDetails thr1 = new PrintDetails();
PrintDetails thr2 = new PrintDetails();

Thread thread1, thread2;

public FileMultiTasking()
{
InitializeComponent();
}

protected override void OnStart(string[] args)
{
timer = new System.Timers.Timer();

timer.Enabled = true;
timer.Start();

timer.Interval = 50000;

timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);

}

void timer_Elapsed(object sender, ElapsedEventArgs e)
{
timer.Enabled = true;

CreateThread();
}

private void CreateThread()
{
try
{
timer.Enabled = false;


thread1 = new Thread(() => thr1.TextLog("First Thread : Service Started "));
thread2 = new Thread(() => thr2.TextLog("Seconf Thread : Service Started"));


thread1.Name = "Thread 1";
thread2.Name = "Thread 2";

thread1.Start();
thread2.Start();

timer.Enabled = true;
}
catch (Exception ex)
{
timer.Enabled = true;
}
}


protected override void OnStop()
{
timer.Enabled = false;

errormsg = "Service Stopped ...............";

}
}

class code :
<pre> class PrintDetails
{
public string apppath = System.AppDomain.CurrentDomain.BaseDirectory.ToString();

public void TextLog(string msg)
{
try
{
StreamWriter sw;
FileInfo f;
Thread thr = Thread.CurrentThread;
int j = 0;

// string s = apppath + thr.Name + " PrintDetails " + DateTime.Today.ToString("dd-MM-yyyy") + ".txt";

string s = apppath + " PrintDetails " + DateTime.Today.ToString("dd-MM-yyyy") + ".txt";

f = new FileInfo(s);
if (f.Exists)
{
sw = f.AppendText();
}
else
{
sw = f.CreateText();
sw.WriteLine();
}
sw.WriteLine("-----------------------------------------------------------------");
sw.WriteLine(msg + " " + DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss:ffff"));

if (msg == "Service Stopped ...............")
{

}
else
{
for (int i = 0; i < 3000; i++)
{

Thread thr2 = Thread.CurrentThread;

if (thr2.Name == "Thread 1")
{
sw.WriteLine(thr2.Name + " : " + i + " " + DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss:ffff"));
}
else
{
sw.WriteLine(thr2.Name + " ::: " + i + " " + DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss:ffff"));
}

Console.WriteLine(j);

if (j == 0)
{
j = j + 1;
sw.WriteLine("Thread will sleep now -----------------------------------------------------------------");
Thread.Sleep(1000);
}
}

}


sw.Close();
}
catch (Exception e)
{
msg = e.Message;
TextLog(msg);
}
}
}

Output :

First Thread : Service Started 2018.06.13 12:22:52:8443
Thread 1 : 0 2018.06.13 12:22:52:8443
Thread will sleep now -----------------------------------------------------------------
Thread 1 : 1 2018.06.13 12:22:53:8600
Thread 1 : 2 2018.06.13 12:22:53:8600
Thread 1 : 3 2018.06.13 12:22:53:8600
Thread 1 : 4 2018.06.13 12:22:53:8600
Thread 1 : 5 2018.06.13 12:22:53:8600
Thread 1 : 6 2018.06.13 12:22:53:8600
Thread 1 : 7 2018.06.13 12:22:53:8600
Thread 1 : 8 2018.06.13 12:22:53:8600
Thread 1 : 9 2018.06.13 12:22:53:8600
Thread 1 : 10 2018.06.13 12:22:53:8600
like 2999

The process cannot access the file 'C:\Program Files (x86)\PrintDetails 13-06-2018.txt' because it is being used by another process. 2018.06.13 12:22:53:8912

Thread 2 ::: 0 2018.06.13 12:22:53:8912
Thread will sleep now -----------------------------------------------------------------
Thread 2 ::: 1 2018.06.13 12:22:54:9011
Thread 2 ::: 2 2018.06.13 12:22:54:9011
Thread 2 ::: 3 2018.06.13 12:22:54:9011
Thread 2 ::: 4 2018.06.13 12:22:54:9011
Thread 2 ::: 5 2018.06.13 12:22:54:9011
Thread 2 ::: 6 2018.06.13 12:22:54:9011
Thread 2 ::: 7 2018.06.13 12:22:54:9011
Thread 2 ::: 8 2018.06.13 12:22:54:9011
Thread 2 ::: 9 2018.06.13 12:22:54:9011
Thread 2 ::: 10 2018.06.13 12:22:54:9011
till 2999
//

Why this so?What change shall I do to get output as wanted.