Thank you for your reply and your attention to this problem! The current method that adds a breakpoint after 'CallMATLAB' function works in my project. Before Simio runs MATLAB, Simio will send out needed data to SQL server and then call MATLAB function. MATLAB receives the data through the database, implements the algorithm, and writes the data into the database. The Simio program pauses at the step that Simio reads the MATLAB results from the database.
I have validated the .dll file with a simple MATLAB program that plays a music file and it works. Because the Simio API is a little complex, I just use the code from https://www.sciencedirect.com/science/article/pii/S1569190X16301356 and recomplie that to obtain the .dll. Through this example, I also found Simio continues running after the matlab file is executed
Otherwise, if I didn't pause the Simio after the MATLAB function is called, it generates error like this
I also find that when the MATLAB program is running, it will open a MATLAB command window. If you don't pause, sometimes the MATLAB is still running when the command window exists, and Simio also begins to run before that window closes, and it will generate the same error like abov e. So I guess I have to pause it to let MATLAB program finishes.
I have attached the UserStep.cs that generates CallMatlab.dll. If you have any further idea on this problem, I am really glad to know that. Again, thanks for your reply and idea on this problem.