thảo luận Thread dành cho anh em C#, .Net

  • Người tạo chủ đề Người tạo chủ đề BaronNashor
  • Ngày bắt đầu Ngày bắt đầu
Các thím cho mình hỏi chút. Mình dùng httpwebrequest để post json lên server REST . response về rất chậm
nhưng cùng cái server đó code cũ bằng foxpro thì nó về tức thì luôn
Các thím có biết cách nào khác không
dung webclient thì lại phải dùng await asnyc phai đổi toàn bộ code tầng trên nên ko được
 
Các thím cho mình hỏi chút. Mình dùng httpwebrequest để post json lên server REST . response về rất chậm
nhưng cùng cái server đó code cũ bằng foxpro thì nó về tức thì luôn
Các thím có biết cách nào khác không
dung webclient thì lại phải dùng await asnyc phai đổi toàn bộ code tầng trên nên ko được
Reponse chậm là do nghiệp vụ chậm chớ đâu phải do thư viện call restfull.

Với webclient mà đang dụng .net core thì có thể .Result cho Task thay vì async/await mà ko tạo ra deadlock.

Nhưng vẫn khuyến khích xài IHttpClientFactory hơn để init httpclient thay vì Webclient để tối ưu performance và tránh lỗi socket Exception khi tạo ra quá nhiều instance để call restful service.
https://docs.microsoft.com/en-us/do...tfactory-to-implement-resilient-http-requests
 
uầy, ko để ý có sẵn topic này. Nãy em lại lập topic hỏi nơi giao lưu C#.

Tiện đây em đang muốn làm cái Desktop App cho công việc văn phòng, các bác có recomment tài liệu hoặc mảng kiến thức trọng tâm giúp em được không. Tìm hiểu thấy nhiều thứ lang mang quá :confused:
 
các bác cho mình hỏi về progress bar của WPF tí.
Hiện mình có 2 file, 1 fiel main chạy code chính và một file wpf để hiện output kèm progress bar.
làm sao để sau mỗi vòng loop ở file main thì mình truyền biến i (i+=1) vào wpf để progress bar chạy nhỉ
 
nghiệp vụ xong hết rồi trên c# chỉ gửi nhận requset response thôi
mình có đo thử thời gian từ lúc gửi đến lúc nhận giao động từ 5 đến 10 giây

Reponse chậm là do nghiệp vụ chậm chớ đâu phải do thư viện call restfull.

Với webclient mà đang dụng .net core thì có thể .Result cho Task thay vì async/await mà ko tạo ra deadlock.

Nhưng vẫn khuyến khích xài IHttpClientFactory hơn để init httpclient thay vì Webclient để tối ưu performance và tránh lỗi socket Exception khi tạo ra quá nhiều instance để call restful service.
https://docs.microsoft.com/en-us/do...tfactory-to-implement-resilient-http-requests
 
^ https://stackoverflow.com/questions/2519655/httpwebrequest-is-extremely-slow

gúc thì ra thử ntn bác xem sao , hình như win 64bit dính cái này
UfbjKQ4.jpg
 
các bác cho mình hỏi về progress bar của WPF tí.
Hiện mình có 2 file, 1 fiel main chạy code chính và một file wpf để hiện output kèm progress bar.
làm sao để sau mỗi vòng loop ở file main thì mình truyền biến i (i+=1) vào wpf để progress bar chạy nhỉ

Lý do ko update được là do cái progress bar bạn gọi ko nằm trên UI thread. Bạn update như sau:

progressBar1.Dispatcher.BeginInvoke(
new Action(() =>
{
progressBar1.Value = progress;
}
));
 
Mã:
        async Task<string> GetResponseString(string json)
        {
            var httpClient = new System.Net.Http.HttpClient();
            var content = new System.Net.Http.StringContent(json, Encoding.UTF8, "application/json");
            var response = await httpClient.PostAsync(PayPosApi, content);
            var contents = await response.Content.ReadAsStringAsync();
            return contents;
        }

//use
txtRes.Text = GetResponseString(txtReq.Text).Result;

Mình dùng như trên nó chẳng trả về gì cả @@

Thì bạn chuyển qua httpclient như mình nói
 
Mã:
        async Task<string> GetResponseString(string json)
        {
            var httpClient = new System.Net.Http.HttpClient();
            var content = new System.Net.Http.StringContent(json, Encoding.UTF8, "application/json");
            var response = await httpClient.PostAsync(PayPosApi, content);
            var contents = await response.Content.ReadAsStringAsync();
            return contents;
        }

//use
txtRes.Text = GetResponseString(txtReq.Text).Result;

Mình dùng như trên nó chẳng trả về gì cả @@
Debug thử dữ liệu có trả về không, nếu có thì do txtRes ko được call trên UI thread rồi. Còn ko thì xem lại httpclient bị thiếu step nào ko
 
=(( Dùng wait() lấy được dữ liệu rồi
nhưng mà vẫn hơn 10 giây mới về
mé nó éo hiểu

thêm timer đếm thời gian từ lúc PostAsync đến lúc Result mất 10 giây
đéo hiểu nó làm cái gì

update
httpClient.PostAsync lần đầu thì mất 10 giây để request
các lần tiếp theo thì nhanh trở lại
=> chuyển httpClient thành biến static thì trong 1 phiên chạy chỉ bị 1 lần chậm đầu tiên

:eek: không hiểu vấn đề ở server hay cái gì


Debug thử dữ liệu có trả về không, nếu có thì do txtRes ko được call trên UI thread rồi. Còn ko thì xem lại httpclient bị thiếu step nào ko
 
Sửa lần cuối:
uầy, ko để ý có sẵn topic này. Nãy em lại lập topic hỏi nơi giao lưu C#.

Tiện đây em đang muốn làm cái Desktop App cho công việc văn phòng, các bác có recomment tài liệu hoặc mảng kiến thức trọng tâm giúp em được không. Tìm hiểu thấy nhiều thứ lang mang quá :confused:
Youtube các kênh dạy tiếng Việt C# cơ bản, nâng cao
và phần Winform hay WPF để làm Desktop App thiếu gì
Trên kênh K Team có hết
Free hoàn toàn
 
=(( Dùng wait() lấy được dữ liệu rồi
nhưng mà vẫn hơn 10 giây mới về
mé nó éo hiểu

thêm timer đếm thời gian từ lúc PostAsync đến lúc Result mất 10 giây
đéo hiểu nó làm cái gì

update
httpClient.PostAsync lần đầu thì mất 10 giây để request
các lần tiếp theo thì nhanh trở lại
=> chuyển httpClient thành biến static thì trong 1 phiên chạy chỉ bị 1 lần chậm đầu tiên

:eek: không hiểu vấn đề ở server hay cái gì
HttpClient nên initialize một lần và dùng lại, xong rồi thì Dispose một lần thôi.
Chậm đến 10 giây thì khả năng là do cấu hình proxy. Bác thử cho nó bỏ qua autodetect cấu hình proxy xem có nhanh không:
C#:
HttpClientHandler client = new HttpClientHandler();
client.Proxy = null;
client.UseProxy = false;
 
em vừa học xong năm 2 đại học cũng học về c# mà chơi suốt 2 năm giờ muốn bắt đầu lại thì học từ đâu vậy mấy anh :3
 
Chào các bác.
Sơ qua về em thì emđang là sinh viên năm 4 chuyên ngành điện - điện tử của 1 trường ở HCM,đang làmđồán tốt nghiệp.
Nhưng em không có nhiều kiến thức về chuyên ngành cũng không có hứng thú với ngànhđiện.
Thay vàođó em rất thích ngành lập trình,đếnnăm 4em mới nhận rađiềuđóạ.Em cũng tìm hiểu qua về lập trình thì nó rất rộng, em thích làm về lập trình web và ứng dụng cho window nên em học ngôn ngữ C# và thấy mình học nó cũng ổn ạ.
Lộ trình của em là học từ Basic -OOP-Winform- SQL Sever- .Net
Tư duy logic về toán học em cũng rất tốt .
Hiện tại emđang họcđược 1/2 OOP rồi .
Thời gian này em vừa tự học C# bên cạnhđó cũng làmđồán nữa,với tình hình dịch bệnh như hiện tại em cũng có thêm thời gian dài hơn cho việc học.
Nay em có 1 số thắc mắc mong các bác giải đáp giúp em với :
1. Emđịnh tốt nghiệp xong thì sẽ có bằng kĩ sư vềđiện tử, nhưng em sẽ apply vô những chổ tuyển C# thì cóđược khôngạ??
2. Thời gian đầu sau khi ra trường em sẽ học hỏi và làm về C#, sauđó sẽ tích lũy thêm kiến thức trong quá trìnhđó. Và gom tiềnđể hjc thêm văn bằng 2 công nghệ thông tin của trường KHTN HCM.
Thì bằng đó sẽ có tac dụng tương tự như bằng chính thứcđúng khôngạ??
3. Trong quá trình tự hoc thì em cần phải có những kĩ năng gì ?
Hiện tại thì em học những cú pháp cơ bản rồi, cũng làm 1 số bài tập cơ bản , nhưng khiđọc code mẫu thì 1 số chỗ, cú pháp không có như những gì emđã học làm em rât bối rối thì phải làm saoạ ?

CẢM ƠN MỌI NGƯỜI ĐÃ XEM =.=

Anh giống em quá, e cũng thích viết c# winform , có gì mình trao đổi đc k?

Gửi từ HMD Global Nokia 1 bằng vozFApp
 

Thống kê chủ đề

Ngày tạo
BaronNashor,
Người trả lời cuối
vuong222211,
Trả lời
266
Lượt xem
50.925
Quay lại
Lên đầu trang