Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
Clipboard.cs
Go to the documentation of this file.
1using System;
4
6
7internal class Clipboard : ReLogic.OS.Base.Clipboard
8{
9 protected override string GetClipboard()
10 {
11 return TryToGetClipboardText();
12 }
13
14 protected override void SetClipboard(string text)
15 {
16 if (string.IsNullOrEmpty(text))
17 {
18 return;
19 }
20 try
21 {
22 InvokeInStaThread(delegate
23 {
25 });
26 }
27 catch
28 {
29 Console.WriteLine("Failed to set clipboard contents!");
30 }
31 }
32
33 private string TryToGetClipboardText()
34 {
35 try
36 {
37 string text;
38 return InvokeInStaThread(() => (!NativeClipboard.TryGetText(out text)) ? "" : text);
39 }
40 catch
41 {
42 Console.WriteLine("Failed to get clipboard contents!");
43 return "";
44 }
45 }
46
47 private static T InvokeInStaThread<T>(Func<T> callback)
48 {
50 {
51 return callback();
52 }
53 T result = default(T);
54 Thread thread = new Thread((ThreadStart)delegate
55 {
56 result = callback();
57 });
59 thread.Start();
60 thread.Join();
61 return result;
62 }
63
64 private static void InvokeInStaThread(Action callback)
65 {
67 {
68 callback();
69 return;
70 }
71 Thread thread = new Thread((ThreadStart)delegate
72 {
73 callback();
74 });
76 thread.Start();
77 thread.Join();
78 }
79
81 {
82 try
83 {
84 return Thread.CurrentThread.GetApartmentState();
85 }
86 catch
87 {
88 return ApartmentState.MTA;
89 }
90 }
91}
static ApartmentState GetApartmentStateSafely()
Definition Clipboard.cs:80
override void SetClipboard(string text)
Definition Clipboard.cs:14
static void InvokeInStaThread(Action callback)
Definition Clipboard.cs:64
static T InvokeInStaThread< T >(Func< T > callback)
Definition Clipboard.cs:47
override string GetClipboard()
Definition Clipboard.cs:9
static bool TryGetText(out string text)
static void SetText(string text)
static void WriteLine()
Definition Console.cs:733
void SetApartmentState(ApartmentState state)
Definition Thread.cs:771
bool Join(int millisecondsTimeout)
static Thread CurrentThread
Definition Thread.cs:312
void Start(object? parameter)
Definition Thread.cs:574
delegate void ThreadStart()