我正在使用 C# 编写一个 TFTP 客户端库。
public class TFTPcl
{
public enum Opcodes
{
Unknown = 0,
Read = 1,
Write = 2,
Data = 3,
Ack = 4,
Error = 5
}
public TFTPcl(string server)
: this(server, 69)
{
}
//Get function copies the file from TFTP server to localsystem path
public void Get(string remoteFile, string localFile)
{
Thread t = new Thread(() => Get(remoteFile, localFile, Modes.Octet));
t.Start();
}
public void Get(string remoteFile, string localFile, Modes tftpMode)
{
byte[] sendBuffer = CreateReqPacket(Opcodes.Read, remoteFile, tftpMode);
/*process for getting the remote file from remote-server........*/
}
private byte[] CreateReqPacket(Opcodes opCode, string remoteFile, Modes tftpMode)
{
//Creates the TFTP request packet
}
}
class Program
{
static void Main(string[] args)
{
TFTPcl tf = new TFTPcl("xxx.xxx.xxx.xxx");//Server IP
tf.Get("del.txt","d:\\Do.txt");
tf.Get("del.txt", "d:\\Do2.txt");
}
}
这个 TFTP 客户端将作为一个库,以便其他应用程序调用Get
API。目前,我已将其作为 exe 用于测试目的。
我的问题是:Get
当从两个不同/相同的应用程序同时调用它时,该方法是否创建线程?它会导致任何问题,如同步问题吗?
CreateReqPacket
因为是在线程函数(function)内部调用的,所以函数会不会有问题Get
?
如果问题仍然存在,如何处理这种情况?