Tag: 跨平台

如何处理在一个平台上同步但在另一个平台上异步的代码

在编写基于Xamarin的跨平台C#应用程序时,我经常遇到的情况是在一个平台上同步但在另一个平台上异步的代码。 例如,文件访问在iOS,Android和Mac上是同步的,但在Windows上是异步的。 这导致了一些棘手的问题。 首先,在纯编码级别上,编译器希望方法是异步还是不同步。 但它比这更糟糕。 例如,如果iOS UI线程发现它需要加载一个小文件,并且在UI线程上同步这样做,这可能不会对用户造成任何明显的打嗝。 是的,我意识到,作为一般规则,人们希望预先加载这些资源。 但如果没有发生,并且文件很小,那就不会导致问题。 但是,如果从iOS UI代码调用C#异步方法并等待结果,应用程序将挂起。 结果是我们有两个方法,Foo()和FooAsync(),我们调用哪个方法取决于平台。 但我们不能只让整个事情变得异步。 鉴于此,如何组织一个代码尽可能地坚持DRY,同时在一个平台上保持同步并在另一个平台上保持同步? ** 编辑 – 响应一个例子的请求:这里有一些虚拟代码来说明问题。 如果有人打电话 await StringLoaders.ReadAllText(somePath) 从iOS UI线程,结果是挂起。 是的,这个特定的例子有解决方法。 但一般问题是反复出现的问题。 如果应用程序有很多层,这是特别糟糕的,因为这样做 – 可能需要在整个代码中携带同步/异步区别,从而产生大量方法的两个版本。 public class AsyncStringLoader { public async Task ReadAllTextAsync(string path) { return await Task.Run(() => “Hello”); } } public class StringLoader { public string ReadAllText(string path) { return […]

获取当前的ip-address Xamarin.Forms(跨平台)

如何获取Xamarin.Forms(跨平台)的当前IP地址? WifiManager我不能使用而且不能包含WifiManager?

Xamarin.form页面导航在mvvm中

我正在开发xamarin.form跨平台应用程序,我希望在按钮点击时从一个页面导航到另一个页面。 因为我不能做Navigation.PushAsync(new Page2()); 在ViewModel中,因为它只能在Code-Behid文件中使用。 请建议任何方式这样做? 这是我的观点: 这是我的ViewModel: public class LocalAccountViewModel : INotifyPropertyChanged { public LocalAccountViewModel() { this.ContinueBtnClicked = new Command(GotoPage2); } public void GotoPage2() { ///// } public ICommand ContinueBtnClicked { protected set; get; } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanges([CallerMemberName] string PropertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(PropertyName)); } }

屏幕保护程序如何在Mac OS X和Linux上运行?

在Windows中,屏幕保护程序只是在system32中转储了.scr扩展名的可执行文件,它由三个交换机控制(我认为是/ p,/ c和/ s)。 屏幕保护程序如何在Mac OS X和Linux上运行? 它们在Mac OS X和Linux(Gnome,KDE,Ubuntu,或者差异在哪里)的工作方式类似,还是完全不同? 此外,它们可以用C#/ Mono开发吗?

C#程序可以跨平台吗?

我是编程的新手,我正在考虑使用C#编写一个非常简单的程序,只需编辑一个文本文件。 它可以在Mac和Linux上运行吗? 什么会奏效? 我想知道什么使程序跨平台?

是否有C#/ .NET的跨平台GUI框架?

让我们说只是为了它的乐趣,我决定不再用Java编写桌面应用程序,而是想切换到使用C#。 我希望能够构建一个将在某些主流Linux发行版上运行的应用程序,以及最近发布的MS Windows。 它将有一个GUI组件。 在Java中,我可以构建一个使用Swing的应用程序。 一旦我有它工作,我可以将该jar文件从Windows复制到Linux,反之亦然,这取决于我开发它的位置。 它通常会运行java -jar myapp.jar 。 在C#中可以这样做吗? 在C#中是否有与Swing或AWT相同的function?

用于跨平台Xamarin Forms的UserControl

我一直在寻找很长一段时间但仍未找到为跨平台Xamarin Forms创建类似UserControl的WPF的方法。 甚至可以这样做吗? 我在Visual Studio 2013中使用Xamarin。

如何将.NET应用程序移植到mono

由于我不满意我的C#应用​​程序无法在Linux或Mac上运行,我安装了MonoDevelop,希望将我的应用程序移植到Mono以实现交叉平台化。 但是,我不知道如何使用MonoDevelop来完成这项任务。 常见问题解答或文档中没有说明。 知道怎么做吗?

Xamarin.Forms和Xamarin Cross平台之间的区别

我在Xamarin Environment工作了2年,大部分时间都使用过Xamarin.Forms。 但是,我不知道Xamarin Cross Platform是什么? 有人可以提供一些结构差异吗?

便携式C#的最佳实践

我期待为linux / windows / mac /任何其他平台编写一些C#代码,并且正在寻找便携式代码的最佳实践。 Project mono有一些很棒的移植资源。 便携式C#的最佳实践是什么?