C# 데스크톱 UI를 사용한 비동기식 상호 작용
public partial class f_main : Form
{
public f_main()
{
InitializeComponent();
}
/// <summary>
/// ,
/// </summary>
public void StartWorkWithThread()
{
for (int i = 0; i < 20; i++)
{
// .... , ....
Annunciator<TextBox, string>(tb_info, ControlDoInfo, "id = " + i.ToString() + " time = " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
System.Threading.Thread.Sleep(500);
}
}
/// <summary>
/// ,
/// , (StartWorkWithThread()),
/// (ControlDoInfo(string info))
/// </summary>
/// <typeparam name="TControl"> , Control</typeparam>
/// <typeparam name="TData"> </typeparam>
/// <param name="control"> </param>
/// <param name="doAction"> </param>
/// <param name="info"> ( )</param>
public void Annunciator<TControl, TData>(TControl control, Action<TData> doAction, TData info) where TControl : Control
{
if (control.InvokeRequired)
{
Action<TData> doIt = doAction;
control.Invoke(doIt, info);
}
else
{
doAction(info);
}
}
/// <summary>
/// ,
/// </summary>
/// <param name="i"></param>
public void ControlDoInfo(string info)
{
tb_info.AppendText(info + "
");
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
//
System.Threading.Thread th = new System.Threading.Thread(StartWorkWithThread);
th.Start();
}
}
// , , Control
public static class ExpandFunction
{
public static void Annunciator<TData>(this Control control, Action<TData> doAction, TData info)
{
if (control.InvokeRequired)
{
Action<TData> doIt = doAction;
control.Invoke(doIt, info);
}
else
{
doAction(info);
}
}
}
//
public void Log(string info)
{
// ,
//(str) => { tb_info.AppendText(str + "
"); }
//info
tb_info.Annunciator<string>((str) => { tb_info.AppendText(str + "
"); }, info);
}
// Log Action 。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Application Development in WebOSDevelop applications in WebOS Recognize the abstract class Application The operating system accepts classes that impleme...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.