Using AppDesigner with FileSystemWatcher

조회 수: 12 (최근 30일)
Darrell
Darrell 2020년 6월 29일
답변: Geoff Hayes 2020년 6월 30일
I am trying to create a MATLAB app that uses FileSystemWatcher to call an event handler each time a specific file has changed--using version 2018b. I have created the following two functions in Code View using the appdesigner; however the app never calls 'eventhandlerChanged' function. I've spent a lot of time trying to get this to work, so any help would be greatly appreciated.
% Button pushed function: TestFSWButton
function AddFSW(app, event)
fileObj = System.IO.FileSystemWatcher('D:\Matlab\Work');
fileObj.Filter = 'test.csv';
fileObj.EnableRaisingEvents = true;
addlistener(fileObj,'Changed',@app.eventhandlerChanged);
end
function eventhandlerChanged(app,evt)
tic;
toc;
end
  댓글 수: 6
Darrell
Darrell 2020년 6월 29일
Geoff,
That worked! Below is the final code.
properties (Access = private)
myFSW % FileSystemWatcher object
end
function eventhandlerChanged(app,~,~)
% do stuff
disp('Successful!');
end
% Button pushed function: TestButton
function AddFSW(app, event)
app.myFSW = System.IO.FileSystemWatcher('D:\Matlab\Work');
app.myFSW.Filter = 'test.csv';
app.myFSW.EnableRaisingEvents = true;
addlistener(app.myFSW,'Changed',@app.eventhandlerChanged);
end
Note. If you modify the test file using Notepad the method will fire twice; but if you are watching for an actual file it all works correctly. Thank you!
Geoff Hayes
Geoff Hayes 2020년 6월 30일
Glad it worked out! :)

댓글을 달려면 로그인하십시오.

채택된 답변

Geoff Hayes
Geoff Hayes 2020년 6월 30일
Summary of issue: from Create event listener bound to event source it shows that the call to addlistener returns an object. In the above code, this object is local to the AddFSW method and so would be destroyed when the method "completes" which would mean that we no longer have an object listening for changes to the file. The fix is to make the listener object a member of the app so that it exists for the lifetime of the app (or until removed or deleted if needed).

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Develop Apps Using App Designer에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by