gpt4 book ai didi

c# - 如何使用回调字符串到主窗体

转载 作者:行者123 更新时间:2023-11-30 20:46:28 25 4
gpt4 key购买 nike

我有一个用c#写的方法

class TorrentDownload
{
private readonly Thread _getstateThread;
public Sohadownload() {
_getstateThread = new Thread(GetState);
_getstateThread.Start();
}

TorrentHandle handle=null;
public void Start(AddTorrentParams param)
{
var _session = new Session();
if (_session == null) throw new ArgumentNullException("sesion");
_session.ListenOn(6881, 6889);
handle = _session.AddTorrent(param);
}

public void GetState(){
while (true)
{
if (handle == null)
{
Thread.Sleep(1000);
continue;
}
var status = handle.GetStatus();
if (status.IsSeeding)
{
break;
}
string _state = status.State.ToString();
double _up = status.UploadRate;
double _down = status.DownloadRate;
double _process = status.Progress;
Thread.Sleep(1000);
//Console.WriteLine("State {0} Process {1}", _state, _process);
}
}
}

现在在 Main() 程序中我只想调用 _state_up_dơn 中的值, _process 变量显示在 Console.Writeline 中我正在尝试使用委托(delegate),但它不起作用。

请帮助我,谢谢。

最佳答案

根据您的要求,这里有一个想法

构建一个类来管理状态并创建公共(public)属性,以便您能够访问变量值

从您的主函数中,您可以调用 GetState,然后您可以访问 _state_up_down 的值, _process

如果需要,您可以将属性和方法以及类设置为static,但这里是示例代码:

public class ManageStatus
{
private string _state;
private double _up,_down,_process;

public string State
{
get{ return _state;}
set{ _state=value;}
}
public string State
{
get{ return _state;}
set{ _state=value;}
}
public double Up
{
get{ return _up;}
set{ _up=value;}
}
public double Down
{
get{ return _down;}
set{ _down=value;}
}
public double Process
{
get{ return _process;}
set{ _process=value;}
}
public void GetState()
{
while (true)
{
if (handle == null)
{
Thread.Sleep(1000);
continue;
}
var status = handle.GetStatus();
if (status.IsSeeding)
{
break;
}
_state = status.State.ToString();
_up = status.UploadRate;
_down = status.DownloadRate;
_process = status.Progress;
Thread.Sleep(1000);
}
}
}

在你的主代码中你可以这样做

public static void Main()
{
var status=new ManageStatus();
status.GetState();
Console.Writline("State:{0}",status.State);
Console.Writline("Up:{0}",status.Up);
Console.Writline("Down:{0}",status.Down);
Console.Writline("Process:{0}",status.Process);
}

希望对你有帮助

关于c# - 如何使用回调字符串到主窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26885796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com