Tôi đang xây dựng một ứng dụng cho cả iOS và Android sử dụng nền tảng chéo Xamarin. Tôi có một dự án có tên là "Core", sau đó là một dự án cho iOS và một cho Android.Làm thế nào để ngủ thread trong Xamarin android và ios?
Trong dự án "Lõi" được chia sẻ, tôi muốn hiển thị hoạt ảnh tải mà tôi đã tạo, trong khi tìm nạp vị trí hiện tại từ thiết bị. Tôi có thể nhận được locationWatcher của tôi, bắt đầu nó, và gọi LocationWatcher.CurrentPosition trực tiếp, nhưng kể từ khi nó vừa mới bắt đầu xem để cập nhật vị trí, nó chưa có thời gian để có được bất kỳ vị trí nào.
Giải pháp của tôi cho điều này là chờ 2 giây sau khi bắt đầu và sau đó nhận vị trí. Tuy nhiên tôi không muốn chờ đợi một cách vô tình, tôi muốn giao diện người dùng bị khóa trong khi chờ đợi. Điều này là do người dùng không thể làm bất cứ điều gì cho đến khi vị trí hiện tại os được biết đến.
Tôi hiện đạt được điều này bằng cách có một vòng lặp:
DateTime startTime = DateTime.Now();
while ((DateTime.Now() - startTime).TotalMilliseconds() < 2000) {
//Locking the UI here, but it's what I want so it's ok.
}
Điều này có vẻ giống như một xấu xí 'Hack' kiếm cái gì đó trong Java sẽ chỉ đơn giản là "Thread.sleep (2000)"
Có một cách tốt hơn để làm điều này?
Cả hai câu trả lời đều hoạt động, nhưng như đã đăng, nó thực sự là ** xấu ** e để chặn luồng giao diện người dùng chính của bạn, hãy nhớ chặn giao diện người dùng dư thừa có thể khiến ứng dụng chấm dứt ứng dụng và thậm chí khiến ứng dụng đó không gửi được ứng dụng. IMO, Đặt một thumper trên màn hình và thực hiện một cuộc gọi async ... – SushiHangover
Ý kiến tuyệt vời, tôi sẽ cố gắng không chặn các chủ đề giao diện người dùng chính như tôi đã được chủ yếu là làm nó bởi vì tôi không thể tải các hoạt hình để hoạt động đúng, vì vậy người dùng đã nhấp chuột một cách dữ dội trong khi họ thực sự phải chờ kết quả. Tôi sẽ cố gắng làm cho công việc đó với "chờ đợi Task.Delay (ms)". – JavaDevSweden