也许我错过了某些简单的东西,但是还是要问一下... 我在使用Xamarin表单(.NET标准项目)、MVVMLight、Realm DB和ZXing条形码扫描器。我有一个像这样的realmobject...
我有一个对应的视图模型,如下所示:
所有上述内容都正常运行,我没有任何问题。在同一视图模型中,我还可以启动ZXing扫描器并扫描代表注册码的条形码。这将反过来填充下面的属性(也在视图模型中)一旦被扫描...
我一直收到以下错误信息...
System.Exception: 从错误的线程访问Realm。
由下面的代码行生成...
SelectedParticipant = Participants.FirstOrDefault(p => p.RegistrationCode.Equals(regCode, StringComparison.OrdinalIgnoreCase));
我不确定这是如何成为错误的线程,但任何有关如何解决从已填充的IQueryable或直接从Realm表示中提取扫描参与者的想法都将不胜感激。
谢谢
public class Participant : RealmObject
{
public string FirstName {get; set;}
public string LastName {get; set;}
public string Email {get; set;}
public string RegistrationCode {get; set;}
//More properties skipped out for brevity
}
我有一个对应的视图模型,如下所示:
public class ParticipantViewModel
{
Realm RealmInstance
public ParticipantViewModel()
{
RealmInstance = Realms.Realm.GetInstance();
RefreshParticipants();
}
private async Task RefreshParticipants()
{
//I have code here that GETS the list of Participants from an API and saves to the device.
//I am using the above-defined RealmInstance to save to IQueryable<Participant> Participants
}
}
所有上述内容都正常运行,我没有任何问题。在同一视图模型中,我还可以启动ZXing扫描器并扫描代表注册码的条形码。这将反过来填充下面的属性(也在视图模型中)一旦被扫描...
private ZXing.Result result;
public ZXing.Result Result
{
get { return result; }
set { Set(() => Result, ref result, value); }
}
并通过以下方法调用(通过ScanResultCommand进行连接)来获取扫描RegistrationCode的参与者。
private async Task ScanResults()
{
if (Result != null && !String.IsNullOrWhiteSpace(Result.Text))
{
string regCode = Result.Text;
await CloseScanner();
SelectedParticipant = Participants.FirstOrDefault(p => p.RegistrationCode.Equals(regCode, StringComparison.OrdinalIgnoreCase));
if (SelectedParticipant != null)
{
//Show details for the scanned Participant with regCode
}
else
{
//Display not found message
}
}
}
我一直收到以下错误信息...
System.Exception: 从错误的线程访问Realm。
由下面的代码行生成...
SelectedParticipant = Participants.FirstOrDefault(p => p.RegistrationCode.Equals(regCode, StringComparison.OrdinalIgnoreCase));
我不确定这是如何成为错误的线程,但任何有关如何解决从已填充的IQueryable或直接从Realm表示中提取扫描参与者的想法都将不胜感激。
谢谢