【WPF 按鈕點擊后異步上傳多文件code示例】

前言: WPF中按鈕點擊事件如何執行時間太長會導致整個UI線程卡頓,現象就是頁面刷新卡住,點擊其他按鈕無反饋。如下是進行異步執行命令,并遠程上傳文件的代碼。

![異步上傳文件](https://img-blog.csdnimg.cn/direct/20c071929b004dcf9223dee2a6364c64.png
在這里插入圖片描述

// 這里對于長時間執行的任務,必須使用異步方法進行處理private async void SaveCameraConfig(object obj){SystemModel device = SystemModel.GetGlobalInstance();int robotindex = device.SelectedRobotIndex;string selectRobotIp;string temp;if (!Directory.Exists(hostFilePath)){temp = "相機本地配置文件夾不存在,請檢查!";Growl.Error(temp, _token);return;}if (!device.robotIdToIpDict.TryGetValue(robotindex, out selectRobotIp)){temp = "Robot " + (robotindex + 1) + " not connected yet, load faliure!";Growl.Error(temp, _token);return;}Task<bool> task = Task.Run(() => ExecuteLongProcedure(this, selectRobotIp, remoteFilePath, hostFilePath, userName, passWord));await Task.WhenAll(task);bool result = task.Result;if (result){device.LoadCameraConfigFlag = true;temp = "相機配置文件加載成功!";Growl.Success(temp, _token);} else {temp = "相機配置文件傳輸失敗!";Growl.Error(temp, _token);}}private bool ExecuteLongProcedure(object context, string selectRobotIp, string remoteFolderPath, string hostFolderPath, string userName, string passWord){bool transferFlag = true;string temp;string[] filePaths = Directory.GetFiles(hostFolderPath);foreach (string filepath in filePaths){string filename = Path.GetFileName(filepath);// 網絡攝像頭分組A的配置文件均進行發送if (!filename.EndsWith("Group0.config")){continue;}string remoteFilePath = $"{remoteFolderPath}/{filename}";using (var client = new SftpClient(selectRobotIp, userName, passWord)){try{client.BufferSize = 1024;client.Connect();using (var fileStream = new FileStream(filepath, FileMode.Open)){client.UploadFile(fileStream, remoteFilePath);}}catch (Exception ex){transferFlag = false;temp = filename + $"文件傳輸失敗:{ex.Message}";Growl.Warning(temp, _token);return false;}finally{if (client.IsConnected){client.Dispose();// 此處斷連后一定sleep一會兒再重新連接,否則會提示超時Thread.Sleep(200);}}}}return transferFlag;}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215861.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215861.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215861.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

聽我的,日志還是得好好打!

日志這東西&#xff0c;平時看不出來什么&#xff0c;真要出了問題&#xff0c;那就是救命的稻草。這期就給大家分享一些日志相關的東西。 弄懂日志 SpringBoot項目啟動日志 什么是日志&#xff1f; 日志&#xff0c;維基百科中對其的定義是一個或多個由服務器自動創建和維護…

【數學建模】《實戰數學建模:例題與講解》第十一講-因子分析、聚類與主成分(含Matlab代碼)

【數學建模】《實戰數學建模&#xff1a;例題與講解》第十一講-因子分析、聚類與主成分&#xff08;含Matlab代碼&#xff09; 基本概念聚類分析Q型聚類分析R型聚類分析 主成分分析因子分析 習題10.11. 題目要求2.解題過程3.程序4.結果 習題10.21. 題目要求2.解題過程3.程序4.結…

Java網絡編程——安全網絡通信

在網絡上&#xff0c;信息在由源主機到目標主機的傳輸過程中會經過其他計算機。在一般情況下&#xff0c;中間的計算機不會監聽路過的信息。但在使用網上銀行或者進行信用卡交易時&#xff0c;網絡上的信息有可能被非法分子監聽&#xff0c;從而導致個人隱私的泄露。由于Intern…

request、limit資源配額

cpu/mem 的limit和request都是針對container來講的&#xff0c;不是針對pod。 0 < request < limit cpu cpu資源限制的單位m&#xff1a;CPU的計量單位叫毫核(m)。一個節點的CPU核心數量乘以1000&#xff0c;得到的就是節點總的CPU總數量。如&#xff0c;一個節點有兩個…

Rust做一個圖片服務器有多難?

今天我們將詳細探討如何使用Rust構建一個圖片服務器。Rust以其性能、安全性和并發處理能力而聞名&#xff0c;非常適合用于構建網絡服務。 一個圖片服務器需要處理圖片的上傳、存儲、訪問和處理&#xff0c;同時還要考慮安全性和性能。讓我們一步步了解如何用Rust來實現這一目…

使用kubeadm搭建高可用的K8s集群

—————————————————————————————————————————————— 博主介紹&#xff1a;Java領域優質創作者,博客之星城市賽道TOP20、專注于前端流行技術框架、Java后端技術領域、項目實戰運維以及GIS地理信息領域。 &#x1f345;文末獲取源碼…

ImmunityCanvas7.26安裝詳細教程

ImmunityCanvas7.26 大家想必都已經知道了Immunity Canvas7.26武器于2021年3月2日泄露了吧那我就廢話不多說了。 很多人已經有了這款工具不得不說這工具很nice如果要買的話一年的話3萬美金我的天我窮了。。 簡單介紹 Immunity Canvas是美國ImmunitySec出品的安全漏洞檢測工具…

數據庫產品層出不窮,金融行業應該怎么選?|飛輪科技聯合創始人連林江

眾所周知&#xff0c;金融行業對于數據有著極為嚴苛的標準和要求&#xff0c;尤其當在線化、實時化業務場景增多以后&#xff0c;金融行業也面臨著多重的挑戰&#xff1a;既要滿足實時數據分析的高性能、高效率需求&#xff0c;又要確保數據的安全性和完整性。基于此&#xff0…

[GPT]Andrej Karpathy微軟Build大會GPT演講(上)--GPT如何訓練

前言 OpenAI的創始人之一,大神Andrej Karpthy剛在微軟Build 2023開發者大會上做了專題演講:State of GPT(GPT的現狀)。 他詳細介紹了如何從GPT基礎模型一直訓練出ChatGPT這樣的助手模型(assistant model)。作者不曾在其他公開視頻里看過類似的內容,這或許是OpenAI官方…

產品經理在項目周期中扮演的角色Axure的安裝與基本使用

目錄 一.項目周期流程 二.Axure是什么 三.Axure安裝 3.1 一鍵式安裝 3.2 漢化 3.3 授權登錄 四.Axure的界面介紹及基本使用 4.1 菜單欄的使用 4.2 工具欄的使用 4.3 頁面概要的使用及組件的使用 4.4 組件的樣式設計 一.項目周期流程 在一般的項目周期中包含的工作內容有&…

2005-2021年全國各省資本存量測算數據(含原始數據+測算過程+計算結果)

2005-2021年全國各省資本存量測算數據&#xff08;含原始數據測算過程計算結果&#xff09; 1、時間&#xff1a;2005-2021年&#xff08;以2005年為基期&#xff09; 2、范圍&#xff1a;30個省市&#xff08;不含西藏&#xff09; 3、指標&#xff1a;固定資產形成總額、固…

利用工具JStack排查:死鎖問題和CPU100%問題

無論是再面試過程中還是再實際項目開發當中我們都有可能遇到這兩個問題。我之前有同學面試這兩個問題都有問道過。哈哈哈。所以我絕對把他們了解下并利用博客記錄。 1、工具JStack是什么&#xff1f; JStack可以顯示Java應用程序中每個線程的堆棧跟蹤&#xff0c;幫助開發人員…

【PTA題目】7-8 矩陣運算 分數 10

7-8 矩陣運算 分數 10 全屏瀏覽題目 切換布局 作者 C課程組 單位 浙江大學 給定一個nn的方陣&#xff0c;本題要求計算該矩陣除副對角線、最后一列和最后一行以外的所有元素之和。副對角線為從矩陣的右上角至左下角的連線。 輸入格式: 輸入第一行給出正整數n&#xff08;…

Azure Machine Learning - 使用自己的數據與 Azure OpenAI 模型對話

在本文中&#xff0c;可以將自己的數據與 Azure OpenAI 模型配合使用。 對數據使用 Azure OpenAI 模型可以提供功能強大的對話 AI 平臺&#xff0c;從而實現更快、更準確的通信。 關注TechLead&#xff0c;分享AI全維度知識。作者擁有10年互聯網服務架構、AI產品研發經驗、團隊…

臺式掃描電鏡中的掃描速度和掃描模式如何選擇?

臺式掃描電鏡&#xff08;SEM&#xff09;是一種利用電子束掃描樣品表面&#xff0c;通過檢測樣品反射或發射的次級電子、背散射電子、X 射線等信號&#xff0c;來獲取樣品的形貌、結構、組成和分布等信息的儀器。臺式掃描電鏡具有體積小、操作簡單、樣品制備方便、分辨率高、成…

AttributeError: cannot assign module before Module.__init__() call 解決方法

這個錯誤通常是由于在__init__方法之外對模塊中的某些成員進行了初始化或賦值操作&#xff0c;導致模塊還沒有被完全初始化就已經被調用了。為了解決這個問題&#xff0c;需要將所有的初始化或賦值操作移到__init__方法內部。 例如&#xff0c;如果有一個自定義模塊MyModule&a…

量化交易與人工智能:Python庫的應用與效用

&#x1f482; 個人網站:【 海擁】【神級代碼資源網站】【辦公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;輕量化工具創作平臺&#x1f485; 想尋找共同學習交流的小伙伴&#xff0c;請點擊【全棧技術交流群】 量化交易簡介 量化交易是一種利用計算機算法執…

Windows使用virtualenv創建python環境

假設已有python和pip環境使用pip安裝vitualenv pip install virtualenv 將virtualenv的路徑加入環境變量使用virtualenv創建一個虛擬環境 virtualenv virtual_name --pythonpython3.9 激活虛擬環境 virtual_name\Script\activate 遇到問題&#xff1a; 使用工作電腦激活…

VUE+webrtc-streamer 實現實時視頻播放(監控設備-rtsp)

效果 下圖則啟動成功&#xff0c;此時在瀏覽器訪問127.0.0.1:8000可以看到本機監控畫面 1、下載webrtc-streamer 地址&#xff1a;https://github.com/mpromonet/webrtc-streamer/releases 2、解壓下載包 3、雙擊webrtc-streamer.exe啟動服務 4、將下載包html文件夾下webrt…

Vue筆記-在axios中的than函數中使用this需要注意的地方

在Vue中&#xff0c;可以使用this關鍵字來訪問到組件中定義的變量。然而&#xff0c;在axios的then函數中&#xff0c;this關鍵字的作用域會改變&#xff0c;會指向axios對象本身而不是Vue組件實例。因此&#xff0c;不能直接訪問到Vue組件中定義的變量。 解決這個問題的一種方…