How can I call a method from async method?
Hello,
I am trying to integrate admob to my mobile game. I want to call a function when admob request failed. But as I understand while callback function of admob request is async, it throws error.
error:
get_main can only be called from the main thread.
My question is how can I call a normal method from this async method.
Here is my code
private void RequestInterstitial()
{
//Test device
#if UNITY_ANDROID
string adUnitId = "ca-app-pub-3940256099942544/6300978111";
#elif UNITY_IPHONE
string adUnitId = "ca-app-pub-3940256099942544/2934735716";
#else
string adUnitId = "unexpected_platform";
#endif
// Initialize an InterstitialAd.
interstitial = new InterstitialAd(adUnitId);
// Called when an ad request failed to load.
interstitial.OnAdFailedToLoad += HandleOnAdFailedToLoad;
}
public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
MonoBehaviour.print("HandleFailedToReceiveAd event received with message: "
+ args.Message);
interstitial.Destroy();
//SceneManager.LoadScene(0);
normalMethod();
}
Answer by umurcg · Nov 12, 2017 at 12:32 PM
ok, my solution is not elegant but it works. I created booleans like "bool callmethod" and set them false as deafult. I check them in every update, and if they true I call the method from update function and set boolean as false. as I said it is not elegant but it works.
Answer by Bunny83 · Nov 12, 2017 at 02:18 PM
Mike (aka @WhyDoIDoIt) once has created this simple Loom class which represents a simple way to queue an action on the main thread. I've created an "advanced" version that allows the the queueing thread to be blocked until the callback was processed on the main thread. Though in most cases the simple Loom version should work.
Just make sure before you queue something on another thread you have to call
Loom.Initialize();
on the main thread. So somewhere in Awake of one of your scripts. Now you can simply queue a method on the main thread like this:
Loom.QueueOnMainThread(someMethod);
Your answer
![](https://koobas.hobune.stream/wayback/20220612142707im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
ARCore compatibility with iOS platform 2 Answers
Unity Smooth Move and Zoom UI on Canvas for Android/IOS 0 Answers
How to get the decibel level of a mobile micro (Android/iOS) 0 Answers
Admob & Chartboost ads suddenly not working. 1 Answer
Memory Issues while App Launching,Memory Spike right before Splash Screen(Cold Start?) 0 Answers