실행,하지만 지금은 상황이 붙어있는 동안 :자료 UI 스레드 긴 방법을 기다리고 사용하고 비동기
내 요점은 데이터베이스에서 쿼리를 실행하는 것입니다. 쿼리가 완료되지 않은 상태에서 양식에로드하는 gif를 표시하려고합니다.
이
는 데이터베이스 조회하는 방법입니다 :public static async Task<List<string>> GetItensFromDatabase()
{
List<string> names = new List<string>();
using (ServerConn)
{
ServerConn.Open();
SqlCommand cmd = new SqlCommand("Select * From Names", ServerConn);
var ds = new DataSet();
var adapter = new SqlDataAdapter(cmd);
adapter.Fill(ds); // this call lasts about 1 minute
foreach (DataRow dr in ds.Tables[0].Rows)
{
names.Add(dr["Name"].ToString());
}
}
return names;
}
을 그리고 난 여기에 메서드를 호출 : 내가 때까지 회전하는 형태의 편재 로딩 이미지 GIF를 지금
private async void button1_Click(object sender, EventArgs e)
{
List<string> itens = null;
itens = await AsyncMethods.GetItensFromDatabase(); // I want that the form dont be stuck here
ShowItensInListView(itens);
}
을 메서드가 실행 중일 때 GetItensFromDatabase 메서드가 호출되고, 메서드가 종료되면 gif가 다시 회전합니다.
그래서 GetItensFromDatabase 메서드가 실행되는 동안 gif를 회전 시키려면 어떻게해야합니까?
당신은 당신의async
방법 내부
await
키워드를 사용할 수도 있지만 awaitable 작업이 없기 때문에, 당신은
TaskFactory
사용하여 메서드 내 명시 적으로
Task
을 만들어야합니다
GIF는 어디에 있습니까? – Lloyd
메서드에'async'를 두드려도 자동으로 비동기/비 차단이되지 않습니다 ... –