Removed ThreadPool threads in favour of plain threads.

See
NyxStudios/TerrariaAPI-Server@b1d62b6cbd
for details.
This commit is contained in:
Tyler Watson 2016-05-10 23:45:14 +10:00
parent a7ac433bfa
commit 4eca66a024
4 changed files with 36 additions and 20 deletions

View file

@ -44,8 +44,15 @@ namespace TShockAPI
public void Backup()
{
lastbackup = DateTime.UtcNow;
ThreadPool.QueueUserWorkItem(DoBackup);
ThreadPool.QueueUserWorkItem(DeleteOld);
Thread t = new Thread(() => {
DoBackup(null);
DeleteOld(null);
});
t.Name = "Backup Thread";
t.Start();
// ThreadPool.QueueUserWorkItem(DoBackup);
// ThreadPool.QueueUserWorkItem(DeleteOld);
}
private void DoBackup(object o)

View file

@ -37,13 +37,21 @@ namespace TShockAPI
{
initialized = true;
serverId = Guid.NewGuid().ToString(); // Gets reset every server restart
ThreadPool.QueueUserWorkItem(SendUpdate);
// ThreadPool.QueueUserWorkItem(SendUpdate);
Thread t = new Thread(() => {
do {
Thread.Sleep(1000 * 60 * 5);
SendUpdate(null);
} while(true);
});
t.IsBackground = true;
t.Name = "TShock Stat Tracker Thread";
t.Start();
}
}
private void SendUpdate(object info)
{
Thread.Sleep(1000 * 60 * 5);
JsonData data;
if(ServerApi.RunningMono)
@ -105,8 +113,6 @@ namespace TShockAPI
failed = true;
}
}
ThreadPool.QueueUserWorkItem(SendUpdate);
}
}

View file

@ -3,8 +3,6 @@
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{49606449-072B-4CF5-8088-AA49DA586694}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
@ -62,21 +60,18 @@
<Reference Include="Mono.Data.Sqlite">
<HintPath>..\prebuilts\Mono.Data.Sqlite.dll</HintPath>
</Reference>
<Reference Include="MySql.Data, Version=6.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\prebuilts\MySql.Data.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="BCrypt.Net">
<HintPath>..\prebuilts\BCrypt.Net.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\prebuilts\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Web" />
<Reference Include="MySql.Data">
<HintPath>..\prebuilts\MySql.Data.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>..\prebuilts\Newtonsoft.Json.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="BackupManager.cs" />
@ -180,7 +175,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\TerrariaServerAPI\TerrariaServer.csproj">
<Project>{6877506e-adc6-4142-98a6-79e4fa02855a}</Project>
<Project>{6877506E-ADC6-4142-98A6-79E4FA02855A}</Project>
<Name>TerrariaServer</Name>
</ProjectReference>
</ItemGroup>

View file

@ -36,7 +36,16 @@ namespace TShockAPI
public UpdateManager()
{
ThreadPool.QueueUserWorkItem(CheckForUpdates);
Thread t = new Thread(() => {
do {
CheckForUpdates(null);
} while (true);
});
t.Name = "TShock Update Thread";
t.IsBackground = true;
t.Start();
}
private void CheckForUpdates(object state)
@ -53,7 +62,6 @@ namespace TShockAPI
}
Thread.Sleep(CheckXMinutes * 60 * 1000);
ThreadPool.QueueUserWorkItem(CheckForUpdates);
}
public void UpdateCheck(object o)