using System.Globalization;
using System.Security.Principal;
using System.Threading;
+using System.Threading.Tasks;
using System.Reflection;
using System.Collections.Generic;
using SD = System.Diagnostics;
}
#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
+ [Test]
+ public void SetNameInThreadPoolThread ()
+ {
+ Task t = Task.Run (delegate () {
+ Thread.CurrentThread.Name = "ThreadName1";
+ Assert.AreEqual (Thread.CurrentThread.Name, "ThreadName1", "#1");
+
+ try {
+ Thread.CurrentThread.Name = "ThreadName2";
+ Assert.Fail ("#2");
+ } catch (InvalidOperationException) {
+ }
+ });
+
+ t.Wait ();
+ }
+
void CheckIsRunning (string s, Thread t)
{
int c = counter;
public static void WhileAlive (Thread t, bool alive, string s)
{
- DateTime ti = DateTime.Now;
+ var sw = SD.Stopwatch.StartNew ();
while (t.IsAlive == alive) {
- if ((DateTime.Now - ti).TotalSeconds > 10) {
+ if (sw.Elapsed.TotalSeconds > 10) {
if (alive) Assert.Fail ("Timeout while waiting for not alive state. " + s);
else Assert.Fail ("Timeout while waiting for alive state. " + s);
}
public static bool WhileAliveOrStop (Thread t, bool alive, string s)
{
- DateTime ti = DateTime.Now;
+ var sw = SD.Stopwatch.StartNew ();
while (t.IsAlive == alive) {
if (t.ThreadState == ThreadState.Stopped)
return false;
- if ((DateTime.Now - ti).TotalSeconds > 10) {
+ if (sw.Elapsed.TotalSeconds > 10) {
if (alive) Assert.Fail ("Timeout while waiting for not alive state. " + s);
else Assert.Fail ("Timeout while waiting for alive state. " + s);
}