Сегодня я пытался сделать клиент adb в C # с приличным графическим интерфейсом. Итак, я провел небольшое исследование и обнаружил, что SharpAdbClient.
Чтобы сделать push-файл, я использую var file = openFileDialog2.ShowDialog();
, чтобы выбрать файл. Но если я пытаюсь отправить большой файл, графический интерфейс перестает отвечать (как это должно быть).
Итак, чтобы решить эту проблему, я создал поток, который выполняет push, но у меня естьThreadStateException
, когда я пытаюсь запустить OpenFileDialog
.
Вот пример кода:
private void button4_Click(object sender, EventArgs e)
{
Thread pushFile = new Thread(push);
pushFile.Start();
}
private void push()
{
var device = AdbClient.Instance.GetDevices().First();
var file = openFileDialog2.ShowDialog();
var p = new Progress<int>(Progress_Bar);
String newPath = textBox2.Text;
if (file == DialogResult.OK)
{
String filePath = openFileDialog2.InitialDirectory + openFileDialog2.FileName;
using (SyncService service = new SyncService(new AdbSocket(new IPEndPoint(IPAddress.Loopback, AdbClient.AdbServerPort)), device))
using (Stream stream = File.OpenRead(filePath))
{
service.Push(stream, newPath, 444, DateTime.Now, p, CancellationToken.None);
}
}
}