доступ к SeismicCube из другого потока - PullRequest
1 голос
/ 17 июня 2019

Я использую поток для запуска в фоновом режиме функции, используя SeismicCube

public class JobSetup
{
    public SeismicCube cube;
}

public void Function1(SeismicCube cube)
{    
    var jobSetup = new JobSetup();
    jobSetup.cube = cube;
    var th = new Thread(new ParameterizedThreadStart(ThreadFunc));
    th.Start(jobSetup); 
}     

public void ThreadFunc(object state)
{
    var jobSetup = (JobSetup)state;
    ...
    ...
    Point3 new_p = jobSetup.cube.PositionAtIndex(new IndexDouble3(y, x, z));
}

Поскольку Petrel является однопоточным приложением, весь доступ к собственным объектам домена Petrel должен осуществляться в основном потоке.,В противном случае вы получите эту ошибку времени выполнения:

System.InvalidOperationException не обработано. Message = ”Межпотоковая операция недопустима: объект домена получил доступ к приложению из потока, отличного от основного потока.” Source =”Slb.Ocean.Petrel.DomainObject”

...